Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript Syntax Verstaendnisproblem

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    JavaScript Syntax Verstaendnisproblem

    This topic has been deleted. Only users with topic management privileges can see it.
    • BananaJoe
      BananaJoe Most Active @Codierknecht last edited by

      @codierknecht sagte in JavaScript Syntax Verstaendnisproblem:

      @paul53 sagte in JavaScript Syntax Verstaendnisproblem:

      Javascript kennt keine Integer.

      Eines meiner Probleme mit untypisierten Sprachen 😁
      Ich könnte auch schreiben "doofe Sprache" ... aber dann gibt's wieder Haue. 😇

      gib TypeScript eine Chance?

      1 Reply Last reply Reply Quote 0
      • paul53
        paul53 @NeueKlasse last edited by paul53

        @neueklasse sagte: gibt es die möglichkeit 2 States abzufragen?

        Ja, dann aber nicht mit obj.state.val.

        on({id: [idRobotState, idResetButton], change: "ne"}, async function (obj) {
           if(getState(idRobotState).val == 18 || getState(idResetButton).val == 1) {
        

        oder

        on({id: [idRobotState, idResetButton], change: "ne"}, async function (obj) {
           if(obj.id == idRobotState && obj.state.val == 18 || obj.id == idResetButton && obj.state.val == 1) {
        
        N 1 Reply Last reply Reply Quote 1
        • N
          NeueKlasse @paul53 last edited by NeueKlasse

          @paul53

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

          paul53 1 Reply Last reply Reply Quote 0
          • paul53
            paul53 @NeueKlasse last edited by 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 1 Reply Last reply Reply Quote 0
            • N
              NeueKlasse @paul53 last edited by 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)

              paul53 Codierknecht 2 Replies Last reply Reply Quote 0
              • paul53
                paul53 @NeueKlasse last edited by 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 Codierknecht 2 Replies Last reply Reply Quote 0
                • Codierknecht
                  Codierknecht Developer Most Active @NeueKlasse last edited by

                  @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.

                  1 Reply Last reply Reply Quote 1
                  • N
                    NeueKlasse @paul53 last edited by

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

                    paul53 1 Reply Last reply Reply Quote 0
                    • paul53
                      paul53 @NeueKlasse last edited by

                      @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.

                      1 Reply Last reply Reply Quote 0
                      • Codierknecht
                        Codierknecht Developer Most Active @paul53 last edited by 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?

                        paul53 1 Reply Last reply Reply Quote 0
                        • paul53
                          paul53 @Codierknecht last edited by 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.

                          Codierknecht 1 Reply Last reply Reply Quote 0
                          • Codierknecht
                            Codierknecht Developer Most Active @paul53 last edited by

                            @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.

                            paul53 1 Reply Last reply Reply Quote 0
                            • paul53
                              paul53 @Codierknecht last edited by paul53

                              @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.

                              1 Reply Last reply Reply Quote 0
                              • First post
                                Last post

                              Support us

                              ioBroker
                              Community Adapters
                              Donate

                              844
                              Online

                              31.7k
                              Users

                              79.8k
                              Topics

                              1.3m
                              Posts

                              5
                              30
                              801
                              Loading More Posts
                              • Oldest to Newest
                              • Newest to Oldest
                              • Most Votes
                              Reply
                              • Reply as topic
                              Log in to reply
                              Community
                              Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                              The ioBroker Community 2014-2023
                              logo