Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Gibt es in Blockly Block-Lokale Variablen?

    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

    Gibt es in Blockly Block-Lokale Variablen?

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

      Also, das was man in Javascript innerhalb eines { ... } Blocks hinter dem Schlüsselwort "let" deklariert...

      https://www.w3schools.com/js/js_scope.asp

      // code here can NOT use carName
      
      function myFunction() {
        let carName = "Volvo";
        // code here CAN use carName
      }
      
      // code here can NOT use carName 
      
      BananaJoe 1 Reply Last reply Reply Quote 0
      • BananaJoe
        BananaJoe Most Active @MartinP last edited by BananaJoe

        @martinp naja, ja, wenn du eine JavaScript Funktion in Blockly baust, ja, in der hast du das.
        Bzw. deren Parameter wären auch nur lokal

        Also die Funktionsblöcke in denen du JavaScript Code verwenden kannst.
        Bei den Funktionsblöcken mit Blockly müsste das eigentlich auch so sein das diese nur innerhalb gültig sind (auch wenn diese dann global angezeigt werden).

        paul53 1 Reply Last reply Reply Quote 0
        • Homoran
          Homoran Global Moderator Administrators last edited by

          @martinp ich kann kein js, aber ist das nicht setze car name auf "volvo"?

          Codierknecht MartinP 2 Replies Last reply Reply Quote 0
          • Codierknecht
            Codierknecht Developer Most Active @Homoran last edited by Codierknecht

            @homoran
            Prinzipiell schon.
            Aber die Variable ist damit global für das gesamte Script.

            58106e03-bcd4-4993-912f-0ff3397d1465-image.png
            ee5f08fe-d432-4734-aa5e-98f828edf82b-image.png

            @MartinP sucht einen Variable wie hier value, die nur in dem Block gültig ist.
            AFAIK geht das direkt in Blockly nicht. Da müsste man Funktionen verwenden, wie @BananaJoe es vorgeschlagen hat.

            Homoran 1 Reply Last reply Reply Quote 0
            • MartinP
              MartinP @Homoran last edited by

              @homoran nein, das ist das einzige Vorkommen von carName;

              Außerhalb der Funktion würde man carName mit "var carName" definieren.

              Und da passiert auch mir den Variablen, die man sich in Blockly definiert, in dem jeweiligen View...

              67a531d7-dc87-4cc3-95c8-9ceb0fee1a68-grafik.png

              Für interne Zwecke benutzt Blockly das aber schon.
              Bei vorher mit var definierten Variablen wird das let weggelassen...

              var ActTime, LastSeen, ThermostatIsAlive;
              
              ....
              
              on({ id: 'mqtt.0.thermostat.sensors.raum.temperature' /* thermostat/sensors/raum/temperature */, change: 'any' }, async (obj) => {
                let value = obj.state.val;
                let oldValue = obj.oldState.val;
                ActTime = (new Date().getTime());
              ....
              
              1 Reply Last reply Reply Quote 0
              • Homoran
                Homoran Global Moderator Administrators @Codierknecht last edited by

                @codierknecht sagte in Gibt es in Blockly Block-Lokale Variablen?:

                Aber die Variable ist damit global für das gesamte Script.

                und was wäre daran schlimm?

                @martinp sagte in Gibt es in Blockly Block-Lokale Variablen?:

                in dem jeweiligen View...

                wenn das nichts nmit vis zu tun hat, habt ihr mich endgültig abgehängt 😁
                wenn doch erst recht

                Codierknecht MartinP 2 Replies Last reply Reply Quote 0
                • Codierknecht
                  Codierknecht Developer Most Active @Homoran last edited by Codierknecht

                  @homoran sagte in Gibt es in Blockly Block-Lokale Variablen?:

                  und was wäre daran schlimm?

                  Schlimm wäre da nix - muss man halt beachten.
                  Eine globale Variable kannst Du in allen Blöcken verändern.
                  Wird sie nur im jeweiligen Block definiert, hat jeder Block "seine eigene" Variable - mit ggf. gleichem Namen.
                  Das verhindert unerwünschte Seiteneffekte.

                  1 Reply Last reply Reply Quote 0
                  • MartinP
                    MartinP @Homoran last edited by

                    @homoran Das geht da schon etwas in die Interna der Javascript-Ausführung.

                    Ich bin da auch noch nicht so belesen (da C++ mein Alltagsgeschäft ist), inwieweit Javascript da Multitasking-Problematiken ähnlich C++ hat.

                    Wenn diese beiden Trigger GENAU GLEICHZEITIG feuern, würde es in C++ zu Problemen kommen:

                    63df9ffc-81f0-455b-bf7e-6f48774c32fb-grafik.png

                    Nach Nachlesen ist aber Javascript anscheinend in diesem engen Zusammenhang single-Threaded. Die beiden Blöcke können nicht parallel ineinander verschaltelt ausgeführt werden, was zu Problemen führen könnte, wenn beide Blöcke auf die gleiche Variable zugreifen ...

                    damit ist das Ganze eher eine akademische Diskussion. ein let und ein var wird wohl kaum einen Unterschied in Performance und Speicherverbrauch machen, im Rahmen wie man es hier gebraucht ...

                    Codierknecht paul53 2 Replies Last reply Reply Quote 1
                    • Codierknecht
                      Codierknecht Developer Most Active @MartinP last edited by

                      @martinp sagte in Gibt es in Blockly Block-Lokale Variablen?:

                      Wenn diese beiden Trigger GENAU GLEICHZEITIG feuern, würde es in C++ zu Problemen kommen:

                      Nö - das sind ja jeweils lokale Variablen.

                      f724348b-23d3-4746-8da1-4c010eab8a71-image.png

                      Aber das hier könnte Probleme bereiten:
                      f1f6392b-78b3-43d9-9789-31fe47cd8bcf-image.png
                      c7df8911-fce2-44b4-a1f4-7a27e33c332e-image.png

                      haus-automatisierung 1 Reply Last reply Reply Quote 0
                      • paul53
                        paul53 @MartinP last edited by paul53

                        @martinp sagte: Trigger GENAU GLEICHZEITIG feuern

                        "GENAU GLEICHZEITIG" gibt es in Node.js nicht.

                        1 Reply Last reply Reply Quote 0
                        • haus-automatisierung
                          haus-automatisierung Developer Most Active @Codierknecht last edited by

                          @codierknecht sagte in Gibt es in Blockly Block-Lokale Variablen?:

                          Aber das hier könnte Probleme bereiten:

                          Naja, da benutzt man aber auch bewusst die gleiche Variable. Ist nicht so schön.

                          Codierknecht 1 Reply Last reply Reply Quote 0
                          • Codierknecht
                            Codierknecht Developer Most Active @haus-automatisierung last edited by

                            @haus-automatisierung
                            Ich gebe ja zu: Das ist schon ein ziemlich konstruiertes Beispiel. Sowas kommt in freier Wildbahn wohl kaum vor 😉

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

                              @bananajoe sagte: Bei den Funktionsblöcken mit Blockly müsste das eigentlich auch so sein das diese nur innerhalb gültig sind

                              Nein, nur vordefinierte Variablen (value, oldValue) oder Funktionsparameter sind lokal. Alle selbst erstellten Variablen sind global, außer sie sind Funktionsparameter. Die Variable result ist lokal, obwohl sie auch global deklariert ist.

                              Blockly_temp.JPG

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

                              Support us

                              ioBroker
                              Community Adapters
                              Donate

                              878
                              Online

                              31.9k
                              Users

                              80.1k
                              Topics

                              1.3m
                              Posts

                              6
                              13
                              239
                              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