Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript Syntax Verstaendnisproblem

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    22
    1
    1.2k

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    9.2k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    14
    1
    2.5k

JavaScript Syntax Verstaendnisproblem

Scheduled Pinned Locked Moved Skripten / Logik
30 Posts 5 Posters 1.4k Views 3 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • N NeueKlasse

    @paul53

    dann wird hierbei (beim ersten) das (obj) nichtmehr benoetigt? zumindestens wird es laut script nicht mehr abgefragt
    (grau)

    paul53P Offline
    paul53P Offline
    paul53
    wrote on last edited by paul53
    #21

    @neueklasse sagte: dann wird hierbei das (obj) nichtmehr benoetigt?

    Wenn man getState() verwendet, wird obj nicht benötigt.
    Im nachträglichen 2. Beispiel wird obj benötigt. Das 2. Beispiel ist übrigens effizienter - auch wenn es nicht so aussieht.

    Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
    Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

    N 1 Reply Last reply
    0
    • paul53P paul53

      @neueklasse sagte: dann wird hierbei das (obj) nichtmehr benoetigt?

      Wenn man getState() verwendet, wird obj nicht benötigt.
      Im nachträglichen 2. Beispiel wird obj benötigt. Das 2. Beispiel ist übrigens effizienter - auch wenn es nicht so aussieht.

      N Offline
      N Offline
      NeueKlasse
      wrote on last edited by NeueKlasse
      #22

      @paul53 das heisst man koennte das "on change" vereinfachen? das einfache weglassen von async function (obj) endet bei mir im Fehler. (beim ersten Beispiel)

      paul53P CodierknechtC 2 Replies Last reply
      0
      • N NeueKlasse

        @paul53 das heisst man koennte das "on change" vereinfachen? das einfache weglassen von async function (obj) endet bei mir im Fehler. (beim ersten Beispiel)

        paul53P Offline
        paul53P Offline
        paul53
        wrote on last edited by paul53
        #23

        @neueklasse sagte: vereinfachen?

        Ja, dann aber so:

        on([idRobotState, idResetButton], function () { // triggert bei Wertänderung eines DP
           if(getState(idRobotState).val == 18 || getState(idResetButton).val == 1) {
        

        Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
        Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

        N CodierknechtC 2 Replies Last reply
        0
        • N NeueKlasse

          @paul53 das heisst man koennte das "on change" vereinfachen? das einfache weglassen von async function (obj) endet bei mir im Fehler. (beim ersten Beispiel)

          CodierknechtC Online
          CodierknechtC Online
          Codierknecht
          Developer Most Active
          wrote on last edited by
          #24

          @neueklasse sagte in JavaScript Syntax Verstaendnisproblem:

          das einfache weglassen von async function (obj) endet bei mir im Fehler.

          Das kannst Du selbstverständlich nicht einfach weglassen.
          Wenn überhaupt, dann kannst Du lediglich das obj als Parameter der anonymen Methode weglassen.
          Ich würde es aber nicht entfernen wollen - man kann ich auch "kaputt optimieren".
          Das wird ja (zumindest nach meinem Verständnis) lediglich die Adresse eines Objektes übergeben. Die wegzulassen bringt jetzt nicht wirklich Vorteile.

          "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

          Proxmox 9.1.1 LXC|8 GB|Core i7-6700
          HmIP|ZigBee|Tasmota|Unifi
          Zabbix Certified Specialist
          Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

          1 Reply Last reply
          1
          • paul53P paul53

            @neueklasse sagte: vereinfachen?

            Ja, dann aber so:

            on([idRobotState, idResetButton], function () { // triggert bei Wertänderung eines DP
               if(getState(idRobotState).val == 18 || getState(idResetButton).val == 1) {
            
            N Offline
            N Offline
            NeueKlasse
            wrote on last edited by
            #25

            @paul53 Vereinfachen im Sinne von "kuerzen" wie du aber sagst ist das 2. Beispiel effizienter oder....... "richtiger"?

            paul53P 1 Reply Last reply
            0
            • N NeueKlasse

              @paul53 Vereinfachen im Sinne von "kuerzen" wie du aber sagst ist das 2. Beispiel effizienter oder....... "richtiger"?

              paul53P Offline
              paul53P Offline
              paul53
              wrote on last edited by
              #26

              @neueklasse sagte: 2. Beispiel effizienter oder....... "richtiger"?

              Richtig sind beide. Im 2. Beispiel wird direkt auf eine bereits vorliegende Objekt-Variable zugegriffen und keine komplexe Funktion aufgerufen.

              Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
              Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

              1 Reply Last reply
              0
              • paul53P paul53

                @neueklasse sagte: vereinfachen?

                Ja, dann aber so:

                on([idRobotState, idResetButton], function () { // triggert bei Wertänderung eines DP
                   if(getState(idRobotState).val == 18 || getState(idResetButton).val == 1) {
                
                CodierknechtC Online
                CodierknechtC Online
                Codierknecht
                Developer Most Active
                wrote on last edited by Codierknecht
                #27

                @paul53
                Ist das wieder so eine JS-Eigenart, dass die als Parameter übergebene Methode keine bestimmte Signatur haben muss? Oder gibt's davon mehrere überladene Versionen?

                Was bringt das weglassen von async .... und warum kann man auch das einfach weglassen?

                "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

                Proxmox 9.1.1 LXC|8 GB|Core i7-6700
                HmIP|ZigBee|Tasmota|Unifi
                Zabbix Certified Specialist
                Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

                paul53P 1 Reply Last reply
                0
                • CodierknechtC Codierknecht

                  @paul53
                  Ist das wieder so eine JS-Eigenart, dass die als Parameter übergebene Methode keine bestimmte Signatur haben muss? Oder gibt's davon mehrere überladene Versionen?

                  Was bringt das weglassen von async .... und warum kann man auch das einfach weglassen?

                  paul53P Offline
                  paul53P Offline
                  paul53
                  wrote on last edited by paul53
                  #28

                  @codierknecht sagte: async .... und warum kann man auch das einfach weglassen?

                  async benötigt man nur, wenn man innerhalb der Funktion mit await arbeiten will.

                  @codierknecht sagte in JavaScript Syntax Verstaendnisproblem:

                  die als Parameter übergebene Methode keine bestimmte Signatur haben muss? Oder gibt's davon mehrere überladene Versionen?

                  Ich verstehe nicht, was mit Signatur gemeint ist: Bin kein ITler.

                  Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                  Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                  CodierknechtC 1 Reply Last reply
                  0
                  • paul53P paul53

                    @codierknecht sagte: async .... und warum kann man auch das einfach weglassen?

                    async benötigt man nur, wenn man innerhalb der Funktion mit await arbeiten will.

                    @codierknecht sagte in JavaScript Syntax Verstaendnisproblem:

                    die als Parameter übergebene Methode keine bestimmte Signatur haben muss? Oder gibt's davon mehrere überladene Versionen?

                    Ich verstehe nicht, was mit Signatur gemeint ist: Bin kein ITler.

                    CodierknechtC Online
                    CodierknechtC Online
                    Codierknecht
                    Developer Most Active
                    wrote on last edited by
                    #29

                    @paul53
                    "Signatur" ist quasi der Aufbau der zu übergebenden Methode.
                    Wenn in meiner Welt als Parameter eine anonyme Methode übergeben werden kann, muss die bestimmte Eigenschaften haben. Also z.B. einen Parameter (eines bestimmten Typen) entgegennehmen.
                    Und in meiner (typisierten) Welt auch noch einen bestimmten Typen zurückgeben. Was ja in JS entfällt.
                    In meiner Welt ist also vorher festgelegt, dass die anonyme Methode einen Parameter (in diesem Fall vom Typ "Objekt") erwartet. Wird der nicht mitgeliefert, meckert mein Compiler.
                    Es sei denn, es gibt 2 überladene Versionen der Ereignisbehandlung (Trigger): Einmal mit und einmal ohne Parameter.

                    Mich wundert halt nur, warum man den Parameter einfach weglassen kann.
                    Dass das so einfach geht ist ja nicht unbedingt von Nachteil.

                    "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

                    Proxmox 9.1.1 LXC|8 GB|Core i7-6700
                    HmIP|ZigBee|Tasmota|Unifi
                    Zabbix Certified Specialist
                    Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

                    paul53P 1 Reply Last reply
                    0
                    • CodierknechtC Codierknecht

                      @paul53
                      "Signatur" ist quasi der Aufbau der zu übergebenden Methode.
                      Wenn in meiner Welt als Parameter eine anonyme Methode übergeben werden kann, muss die bestimmte Eigenschaften haben. Also z.B. einen Parameter (eines bestimmten Typen) entgegennehmen.
                      Und in meiner (typisierten) Welt auch noch einen bestimmten Typen zurückgeben. Was ja in JS entfällt.
                      In meiner Welt ist also vorher festgelegt, dass die anonyme Methode einen Parameter (in diesem Fall vom Typ "Objekt") erwartet. Wird der nicht mitgeliefert, meckert mein Compiler.
                      Es sei denn, es gibt 2 überladene Versionen der Ereignisbehandlung (Trigger): Einmal mit und einmal ohne Parameter.

                      Mich wundert halt nur, warum man den Parameter einfach weglassen kann.
                      Dass das so einfach geht ist ja nicht unbedingt von Nachteil.

                      paul53P Offline
                      paul53P Offline
                      paul53
                      wrote on last edited by paul53
                      #30

                      @codierknecht sagte: Mich wundert halt nur, warum man den Parameter einfach weglassen kann.

                      Warum nicht - wenn man ihn nicht benötigt.
                      Der Parameter ist keine Referenz auf ein bereits bestehendes Objekt, sondern obj liefert neben dem statischen Datenpunkt-Objekt den Zustand, den vorherigen Zustand und weitere Informationen (u.a. deviceName, channelName). Das Weglassen spart also RAM.

                      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                      Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                      1 Reply Last reply
                      0
                      Reply
                      • Reply as topic
                      Log in to reply
                      • Oldest to Newest
                      • Newest to Oldest
                      • Most Votes


                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      768

                      Online

                      32.5k

                      Users

                      81.7k

                      Topics

                      1.3m

                      Posts
                      Community
                      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                      ioBroker Community 2014-2025
                      logo
                      • Login

                      • Don't have an account? Register

                      • Login or register to search.
                      • First post
                        Last post
                      0
                      • Home
                      • Recent
                      • Tags
                      • Unread 0
                      • Categories
                      • Unreplied
                      • Popular
                      • GitHub
                      • Docu
                      • Hilfe