Navigation

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

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    Problem beim Vergleichen

    This topic has been deleted. Only users with topic management privileges can see it.
    • mrFenyx
      mrFenyx last edited by

      Hi,
      ich habe das folgende Szenario:

      const TemperatureDp = "daswetter.0.NextHours.Location_1.Day_1.current.temp_value";
      if (TemperatureDp != "") {
          on("TemperatureDp", function (dp) {
              Temperature = dp.state.val;
              log("Current Temperature is " + Temperature);
          });
      }
      

      Ich bekomme aber einen Kompilerfehler:

      Operator '!=' cannot be applied to types '"daswetter.0.NextHours.Location_1.Day_1.current.temp_value"' and '""'.
      const TemperatureDp: "daswetter.0.NextHours.Location_1.Day_1.current.temp_value"
      

      Kann mir bitte jemand helfen? Wieso kommt das? Wie kann ich dieses Vergleich machen?
      Danke!

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

        @mrFenyx sagte:

        Ich bekomme aber einen Kompilerfehler:

        Das ist kein Compiler-Fehler, sondern der Javascript-Editor meckert fälschlicherweise. Der Code funktioniert, wenn die Variable Temperature auch deklariert wird.

                let Temperature = dp.state.val;
        
        AlCalzone 1 Reply Last reply Reply Quote 0
        • AlCalzone
          AlCalzone Developer @paul53 last edited by AlCalzone

          @paul53 @mrFenyx
          Das Problem ist Zeile 2. Der Compiler erkennt, dass TemperatureDp niemals "" sein kann, weil es in der Zeile darüber als konstant definiert und mit einem Wert versehen wird. Die if-Abfrage ist daher sinnlos.

          @mrFenyx Wenn wir schon dabei sind: Zeile 3 ist ebenfalls murks - entferne die Anführungszeichen um TemperatureDp, sonst wird auf einen nicht existierenden State "TemperatureDp" getriggert statt auf "daswetter.0.NextHours.Location_1.Day_1.current.temp_value":

          - on("TemperatureDp", function (dp) {
          + on(TemperatureDp, function (dp) {
          
          paul53 1 Reply Last reply Reply Quote 0
          • paul53
            paul53 @AlCalzone last edited by

            @AlCalzone sagte:

            Die if-Abfrage ist daher sinnlos.

            Das kann die Syntax-Prüfung des Editors erkennen ?

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

              @paul53 Da steckt TypeScript dahinter und das kann es, ja 🙂

              paul53 1 Reply Last reply Reply Quote 1
              • paul53
                paul53 @AlCalzone last edited by paul53

                @AlCalzone sagte:

                das kann es

                Danke. Ja, eine Deklaration mit var oder let anstelle von const wird beim Vergleich nicht angemeckert.

                1 Reply Last reply Reply Quote 0
                • mrFenyx
                  mrFenyx last edited by mrFenyx

                  Danke. Die Frage wäre, was wenn ich TemperatureDp als "" (leer) deklariere. Das ganze ist ein Teil eines Skriptes wo dieses Wert auch leer gelassen sein könnte.

                  EDIT: habe es als var deklariert und es scheint zu gehen 😉

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

                    @mrFenyx sagte:

                    Das ganze ist ein Teil eines Skriptes wo dieses Wert auch leer gelassen sein könnte.

                    Dann kann die ID aber nicht als Konstante deklariert sein.
                    Übrigens stört sich der Compiler nicht an dem sinnlosen Vergleich, sondern führt den Code richtig aus.

                    JS_Temp.JPG

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

                    Support us

                    ioBroker
                    Community Adapters
                    Donate

                    705
                    Online

                    31.8k
                    Users

                    80.0k
                    Topics

                    1.3m
                    Posts

                    3
                    8
                    251
                    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