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

  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Functions mit optionalen Parametern

NEWS

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

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.0k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.5k

Functions mit optionalen Parametern

Scheduled Pinned Locked Moved Skripten / Logik
38 Posts 6 Posters 2.4k Views 5 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.
  • Ben1983B Ben1983

    @oliverio ok, aber wenn ich eine Functions anlegen, kann ich nicht mehr als die deklarierten übergeben.

    OliverIOO Offline
    OliverIOO Offline
    OliverIO
    wrote on last edited by
    #14

    @ben1983 sagte in Functions mit optionalen Parametern:

    @oliverio ok, aber wenn ich eine Functions anlegen, kann ich nicht mehr als die deklarierten übergeben.

    Hast du es ausprobiert? Gibt es eine Fehlermeldung?

    Meine Adapter und Widgets
    TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
    Links im Profil

    Ben1983B 1 Reply Last reply
    1
    • OliverIOO OliverIO

      @ben1983 sagte in Functions mit optionalen Parametern:

      @oliverio ok, aber wenn ich eine Functions anlegen, kann ich nicht mehr als die deklarierten übergeben.

      Hast du es ausprobiert? Gibt es eine Fehlermeldung?

      Ben1983B Offline
      Ben1983B Offline
      Ben1983
      wrote on last edited by
      #15

      @oliverio ja. Die Fehlermeldung lautet, das nur ein Parameter deklariert wurde.

      OliverIOO 1 Reply Last reply
      0
      • Ben1983B Ben1983

        @oliverio ja. Die Fehlermeldung lautet, das nur ein Parameter deklariert wurde.

        OliverIOO Offline
        OliverIOO Offline
        OliverIO
        wrote on last edited by
        #16

        @ben1983 said in Functions mit optionalen Parametern:

        @oliverio ja. Die Fehlermeldung lautet, das nur ein Parameter deklariert wurde.

        dann probier das mal aus.
        gerade im iobroker skript adapter ausprobiert

        function abc() {
            console.log("ergebnis");
            console.log(arguments);
        
        }
        abc(1,2,3,4,5);
        
        18.4.2021, 23:32:57.296	[info ]: javascript.0 (12017) Stop script script.js.Test.Skript_1
        18.4.2021, 23:32:57.299	[info ]: javascript.0 (12017) Start javascript script.js.Test.Skript_1
        18.4.2021, 23:32:57.303	[info ]: javascript.0 (12017) script.js.Test.Skript_1: ergebnis
        18.4.2021, 23:32:57.304	[info ]: javascript.0 (12017) script.js.Test.Skript_1: {'0':1,'1':2,'2':3,'3':4,'4':5}
        18.4.2021, 23:32:57.304	[info ]: javascript.0 (12017) script.js.Test.Skript_1: registered 0 subscriptions and 0 schedules
        

        Meine Adapter und Widgets
        TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
        Links im Profil

        Ben1983B 1 Reply Last reply
        0
        • OliverIOO OliverIO

          @ben1983 said in Functions mit optionalen Parametern:

          @oliverio ja. Die Fehlermeldung lautet, das nur ein Parameter deklariert wurde.

          dann probier das mal aus.
          gerade im iobroker skript adapter ausprobiert

          function abc() {
              console.log("ergebnis");
              console.log(arguments);
          
          }
          abc(1,2,3,4,5);
          
          18.4.2021, 23:32:57.296	[info ]: javascript.0 (12017) Stop script script.js.Test.Skript_1
          18.4.2021, 23:32:57.299	[info ]: javascript.0 (12017) Start javascript script.js.Test.Skript_1
          18.4.2021, 23:32:57.303	[info ]: javascript.0 (12017) script.js.Test.Skript_1: ergebnis
          18.4.2021, 23:32:57.304	[info ]: javascript.0 (12017) script.js.Test.Skript_1: {'0':1,'1':2,'2':3,'3':4,'4':5}
          18.4.2021, 23:32:57.304	[info ]: javascript.0 (12017) script.js.Test.Skript_1: registered 0 subscriptions and 0 schedules
          
          Ben1983B Offline
          Ben1983B Offline
          Ben1983
          wrote on last edited by Ben1983
          #17

          @oliverio Ah OK, man muss arguments in der function auch benutzen, sonst bekommt man beim Aufruf einen Fehler.
          Allerdings hat man dann immer noch den nachteil, dass man beim Aufruf keinen definierten Namen oder eine Beschreibung hat.
          Also bspw. arg[0] ist das, arg[1] ist das ....etc.

          Und wie zum Geier definiert man den Typ eines Parameters :-D das muss doch irgendwie in der Deklaration gehen, oder?
          Ich kenne es von anderen Sprachen so: function xy(string x, int y)

          Ps. wird bei deklarationen trotzdem das erste argument schon gezählt?
          Hier ein Beispiel:

          function xyz(a)
          {
              log(arguments[0]);
          }
          
          xyz(1,8,3,4);
          

          der log gibt 1 raus, also das was eigentlich in Parameter "a" steht.
          Das bedeutet die arguments zählen immer ab dem ersten Parameter und fangen nicht nach dem letzten deklarierten an?

          OliverIOO 1 Reply Last reply
          0
          • Ben1983B Ben1983

            @oliverio Ah OK, man muss arguments in der function auch benutzen, sonst bekommt man beim Aufruf einen Fehler.
            Allerdings hat man dann immer noch den nachteil, dass man beim Aufruf keinen definierten Namen oder eine Beschreibung hat.
            Also bspw. arg[0] ist das, arg[1] ist das ....etc.

            Und wie zum Geier definiert man den Typ eines Parameters :-D das muss doch irgendwie in der Deklaration gehen, oder?
            Ich kenne es von anderen Sprachen so: function xy(string x, int y)

            Ps. wird bei deklarationen trotzdem das erste argument schon gezählt?
            Hier ein Beispiel:

            function xyz(a)
            {
                log(arguments[0]);
            }
            
            xyz(1,8,3,4);
            

            der log gibt 1 raus, also das was eigentlich in Parameter "a" steht.
            Das bedeutet die arguments zählen immer ab dem ersten Parameter und fangen nicht nach dem letzten deklarierten an?

            OliverIOO Offline
            OliverIOO Offline
            OliverIO
            wrote on last edited by
            #18

            @ben1983 sagte in Functions mit optionalen Parametern:

            @oliverio Ah OK, man muss arguments in der function auch benutzen, sonst bekommt man beim Aufruf einen Fehler.

            Nö. Gehts auch ohne benutzen. Aber dann kommst du nicht an die Parameter

            Allerdings hat man dann immer noch den nachteil, dass man beim Aufruf keinen definierten Namen oder eine Beschreibung hat.
            Also bspw. arg[0] ist das, arg[1] ist das ....etc.

            Ja, Sinn macht es da nur, wenn du unbestimmt viele gleichartige Parameter übergeben willst

            Und wie zum Geier definiert man den Typ eines Parameters :-D das muss doch irgendwie in der Deklaration gehen, oder?
            Ich kenne es von anderen Sprachen so: function xy(string x, int y)

            Macht man es den sonst bei JavaScript? Nein.
            Das ist einer der Vorteile aber auch Nachteile. Deswegen gibt es typescript wo du das kannst und in 100% JavaScript übersetzt werden kann.

            Ps. wird bei deklarationen trotzdem das erste argument schon gezählt?
            Hier ein Beispiel:

            function xyz(a)
            {
                log(arguments[0]);
            }
            
            xyz(1,8,3,4);
            

            der log gibt 1 raus, also das was eigentlich in Parameter "a" steht.
            Das bedeutet die arguments zählen immer ab dem ersten Parameter und fangen nicht nach dem letzten deklarierten an?

            Wie du selbst festgestellt hast, ja
            Arguments gibt es immer, ob du Parameter definiert hast oder nicht.

            Meine Adapter und Widgets
            TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
            Links im Profil

            Ben1983B 1 Reply Last reply
            0
            • OliverIOO OliverIO

              @ben1983 sagte in Functions mit optionalen Parametern:

              @oliverio Ah OK, man muss arguments in der function auch benutzen, sonst bekommt man beim Aufruf einen Fehler.

              Nö. Gehts auch ohne benutzen. Aber dann kommst du nicht an die Parameter

              Allerdings hat man dann immer noch den nachteil, dass man beim Aufruf keinen definierten Namen oder eine Beschreibung hat.
              Also bspw. arg[0] ist das, arg[1] ist das ....etc.

              Ja, Sinn macht es da nur, wenn du unbestimmt viele gleichartige Parameter übergeben willst

              Und wie zum Geier definiert man den Typ eines Parameters :-D das muss doch irgendwie in der Deklaration gehen, oder?
              Ich kenne es von anderen Sprachen so: function xy(string x, int y)

              Macht man es den sonst bei JavaScript? Nein.
              Das ist einer der Vorteile aber auch Nachteile. Deswegen gibt es typescript wo du das kannst und in 100% JavaScript übersetzt werden kann.

              Ps. wird bei deklarationen trotzdem das erste argument schon gezählt?
              Hier ein Beispiel:

              function xyz(a)
              {
                  log(arguments[0]);
              }
              
              xyz(1,8,3,4);
              

              der log gibt 1 raus, also das was eigentlich in Parameter "a" steht.
              Das bedeutet die arguments zählen immer ab dem ersten Parameter und fangen nicht nach dem letzten deklarierten an?

              Wie du selbst festgestellt hast, ja
              Arguments gibt es immer, ob du Parameter definiert hast oder nicht.

              Ben1983B Offline
              Ben1983B Offline
              Ben1983
              wrote on last edited by
              #19

              @oliverio also wenn ich die Arguments nicht nutze, dann bekomme ich beim Aufruf mit parameterübegabe wie gesagt die Fehlermeldung, dass keine Parameter übergeben werden können.

              OliverIOO 1 Reply Last reply
              0
              • Ben1983B Ben1983

                @oliverio also wenn ich die Arguments nicht nutze, dann bekomme ich beim Aufruf mit parameterübegabe wie gesagt die Fehlermeldung, dass keine Parameter übergeben werden können.

                OliverIOO Offline
                OliverIOO Offline
                OliverIO
                wrote on last edited by
                #20

                @ben1983 sagte in Functions mit optionalen Parametern:

                @oliverio also wenn ich die Arguments nicht nutze, dann bekomme ich beim Aufruf mit parameterübegabe wie gesagt die Fehlermeldung, dass keine Parameter übergeben werden können.

                hier kein fehler

                function abc() {
                    console.log("ergebnis");
                }
                abc(1,2,3,4,5);
                
                

                Meine Adapter und Widgets
                TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                Links im Profil

                Ben1983B 1 Reply Last reply
                0
                • OliverIOO OliverIO

                  @ben1983 sagte in Functions mit optionalen Parametern:

                  @oliverio also wenn ich die Arguments nicht nutze, dann bekomme ich beim Aufruf mit parameterübegabe wie gesagt die Fehlermeldung, dass keine Parameter übergeben werden können.

                  hier kein fehler

                  function abc() {
                      console.log("ergebnis");
                  }
                  abc(1,2,3,4,5);
                  
                  
                  Ben1983B Offline
                  Ben1983B Offline
                  Ben1983
                  wrote on last edited by
                  #21

                  @oliverio bei mir leider nicht.

                  
                  function mytest()
                  {
                      log("Ergebins");
                  }
                  
                  
                  mytest(1,2,3,4);
                  
                  

                  06B7ED0D-84B7-4A61-8AF4-E86992E1E22E.jpeg

                  OliverIOO 1 Reply Last reply
                  0
                  • Ben1983B Ben1983

                    @oliverio bei mir leider nicht.

                    
                    function mytest()
                    {
                        log("Ergebins");
                    }
                    
                    
                    mytest(1,2,3,4);
                    
                    

                    06B7ED0D-84B7-4A61-8AF4-E86992E1E22E.jpeg

                    OliverIOO Offline
                    OliverIOO Offline
                    OliverIO
                    wrote on last edited by
                    #22

                    @ben1983
                    Das ist der Editor der meckert. Wenn du es laufen lässt gibt kein Fehler.

                    Meine Adapter und Widgets
                    TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                    Links im Profil

                    Ben1983B 1 Reply Last reply
                    0
                    • OliverIOO OliverIO

                      @ben1983
                      Das ist der Editor der meckert. Wenn du es laufen lässt gibt kein Fehler.

                      Ben1983B Offline
                      Ben1983B Offline
                      Ben1983
                      wrote on last edited by
                      #23

                      @oliverio aha, das ist aber ja auch etwas doof. Oder etwa nicht? 😂

                      OliverIOO 1 Reply Last reply
                      0
                      • Ben1983B Ben1983

                        @oliverio aha, das ist aber ja auch etwas doof. Oder etwa nicht? 😂

                        OliverIOO Offline
                        OliverIOO Offline
                        OliverIO
                        wrote on last edited by
                        #24

                        @ben1983 sagte in Functions mit optionalen Parametern:

                        @oliverio aha, das ist aber ja auch etwas doof. Oder etwa nicht? 😂

                        Ja, das sollte eher eine Warnung sein.

                        Meine Adapter und Widgets
                        TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                        Links im Profil

                        1 Reply Last reply
                        0
                        • AlCalzoneA Offline
                          AlCalzoneA Offline
                          AlCalzone
                          Developer
                          wrote on last edited by
                          #25

                          Der Editor hat schon "Recht". arguments stammt noch aus der JS-Steinzeit und kann z.B. für Verwirrung sorgen, wenn man auf Arrow-Funktionen umstellt.

                          Heutzutage macht man das mit Rest-Parametern, die mittlerweile auch überall unterstützt sind:

                          function mytest(...args) {
                             // ...
                          }
                          
                          mytest(1,2,3,4);
                          

                          ist vollkommen OK. So kann man z.B. auch einige Parameter fest vorgeben und den Rest flexibel lassen:

                          function mytest(ist, immer, da, ...nurManchmal) {
                             // ...
                          }
                          
                          mytest(1,2,3); // OK
                          mytest(1,2,3,4); // OK
                          mytest(1,2); // Nicht OK
                          

                          Allgemein empfehle ich für Funktionen mit vielen Parametern, die auch gerne mal optional sind, stattdessen das Bag-of-Options pattern:

                          function mytest(options) {
                            if (options.abc === 1) {
                              // ...
                            }
                            // etc...
                          }
                          
                          mytest({
                            abc: 1,
                            def: 7,
                            //...
                          });
                          

                          Das hat den Vorteil, dass man nicht die Hälfte der Funktion benötigt, um Overloads auseinander zu dividieren. und außerdem sieht man bei der Aufrufstelle direkt, wofür welcher Wert steht.

                          Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

                          paul53P Ben1983B 2 Replies Last reply
                          0
                          • AlCalzoneA AlCalzone

                            Der Editor hat schon "Recht". arguments stammt noch aus der JS-Steinzeit und kann z.B. für Verwirrung sorgen, wenn man auf Arrow-Funktionen umstellt.

                            Heutzutage macht man das mit Rest-Parametern, die mittlerweile auch überall unterstützt sind:

                            function mytest(...args) {
                               // ...
                            }
                            
                            mytest(1,2,3,4);
                            

                            ist vollkommen OK. So kann man z.B. auch einige Parameter fest vorgeben und den Rest flexibel lassen:

                            function mytest(ist, immer, da, ...nurManchmal) {
                               // ...
                            }
                            
                            mytest(1,2,3); // OK
                            mytest(1,2,3,4); // OK
                            mytest(1,2); // Nicht OK
                            

                            Allgemein empfehle ich für Funktionen mit vielen Parametern, die auch gerne mal optional sind, stattdessen das Bag-of-Options pattern:

                            function mytest(options) {
                              if (options.abc === 1) {
                                // ...
                              }
                              // etc...
                            }
                            
                            mytest({
                              abc: 1,
                              def: 7,
                              //...
                            });
                            

                            Das hat den Vorteil, dass man nicht die Hälfte der Funktion benötigt, um Overloads auseinander zu dividieren. und außerdem sieht man bei der Aufrufstelle direkt, wofür welcher Wert steht.

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

                            @alcalzone sagte: So kann man z.B. auch einige Parameter fest vorgeben und den Rest flexibel lassen

                            Man kann auch alle Parameter fest vorgeben, wenn man bei Nichtvorhandensein einen voreingestellten Wert zuweist.

                            Bild_2021-04-20_191534.png

                            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

                            AlCalzoneA 1 Reply Last reply
                            0
                            • AlCalzoneA AlCalzone

                              Der Editor hat schon "Recht". arguments stammt noch aus der JS-Steinzeit und kann z.B. für Verwirrung sorgen, wenn man auf Arrow-Funktionen umstellt.

                              Heutzutage macht man das mit Rest-Parametern, die mittlerweile auch überall unterstützt sind:

                              function mytest(...args) {
                                 // ...
                              }
                              
                              mytest(1,2,3,4);
                              

                              ist vollkommen OK. So kann man z.B. auch einige Parameter fest vorgeben und den Rest flexibel lassen:

                              function mytest(ist, immer, da, ...nurManchmal) {
                                 // ...
                              }
                              
                              mytest(1,2,3); // OK
                              mytest(1,2,3,4); // OK
                              mytest(1,2); // Nicht OK
                              

                              Allgemein empfehle ich für Funktionen mit vielen Parametern, die auch gerne mal optional sind, stattdessen das Bag-of-Options pattern:

                              function mytest(options) {
                                if (options.abc === 1) {
                                  // ...
                                }
                                // etc...
                              }
                              
                              mytest({
                                abc: 1,
                                def: 7,
                                //...
                              });
                              

                              Das hat den Vorteil, dass man nicht die Hälfte der Funktion benötigt, um Overloads auseinander zu dividieren. und außerdem sieht man bei der Aufrufstelle direkt, wofür welcher Wert steht.

                              Ben1983B Offline
                              Ben1983B Offline
                              Ben1983
                              wrote on last edited by
                              #27

                              @alcalzone und optional ist irgendwo als JSON deklariert, oder wie?
                              Ist eigentlich JSON sowas wie eine Klasse in C#?

                              OliverIOO 1 Reply Last reply
                              0
                              • Ben1983B Ben1983

                                @alcalzone und optional ist irgendwo als JSON deklariert, oder wie?
                                Ist eigentlich JSON sowas wie eine Klasse in C#?

                                OliverIOO Offline
                                OliverIOO Offline
                                OliverIO
                                wrote on last edited by OliverIO
                                #28

                                @ben1983 sagte in Functions mit optionalen Parametern:

                                @alcalzone und optional ist irgendwo als JSON deklariert, oder wie?
                                Ist eigentlich JSON sowas wie eine Klasse in C#?

                                Ist einfach nur eine Textdarstellung eines Objektes. Ein Objekt kann so etwas wie eine Klasse in C# sein. Dadurch lassen sich einfach und problemlos daten speichern, über Systemgrenzen hinweg transportieren und auch wieder einlesen und weiterverarbeitbar

                                In C# findest du die Entsprechung unter dem Stichwort serialize und deserialize. Da gibt es dann diverse (bspw binary und auch JSON)
                                https://de.wikipedia.org/wiki/JavaScript_Object_Notation

                                Meine Adapter und Widgets
                                TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                                Links im Profil

                                Ben1983B 1 Reply Last reply
                                0
                                • OliverIOO OliverIO

                                  @ben1983 sagte in Functions mit optionalen Parametern:

                                  @alcalzone und optional ist irgendwo als JSON deklariert, oder wie?
                                  Ist eigentlich JSON sowas wie eine Klasse in C#?

                                  Ist einfach nur eine Textdarstellung eines Objektes. Ein Objekt kann so etwas wie eine Klasse in C# sein. Dadurch lassen sich einfach und problemlos daten speichern, über Systemgrenzen hinweg transportieren und auch wieder einlesen und weiterverarbeitbar

                                  In C# findest du die Entsprechung unter dem Stichwort serialize und deserialize. Da gibt es dann diverse (bspw binary und auch JSON)
                                  https://de.wikipedia.org/wiki/JavaScript_Object_Notation

                                  Ben1983B Offline
                                  Ben1983B Offline
                                  Ben1983
                                  wrote on last edited by
                                  #29

                                  @oliverio OK, wie kann ich denn über createState einen STate mit JSON Inhalt deklarieren, oder eine lokale Variable?

                                  Ziel soll sein, dass ich quasi eine Struktur erzeugen möchte.
                                  Dies gerne durch ein JSON.

                                  Bsp.
                                  MyVar = {Name: MyName, Age: 37, Hair: Brown}

                                  OliverIOO 1 Reply Last reply
                                  0
                                  • Ben1983B Ben1983

                                    @oliverio OK, wie kann ich denn über createState einen STate mit JSON Inhalt deklarieren, oder eine lokale Variable?

                                    Ziel soll sein, dass ich quasi eine Struktur erzeugen möchte.
                                    Dies gerne durch ein JSON.

                                    Bsp.
                                    MyVar = {Name: MyName, Age: 37, Hair: Brown}

                                    OliverIOO Offline
                                    OliverIOO Offline
                                    OliverIO
                                    wrote on last edited by
                                    #30

                                    @ben1983 sagte in Functions mit optionalen Parametern:

                                    @oliverio OK, wie kann ich denn über createState einen STate mit JSON Inhalt deklarieren, oder eine lokale Variable?

                                    Ziel soll sein, dass ich quasi eine Struktur erzeugen möchte.
                                    Dies gerne durch ein JSON.

                                    Bsp.
                                    MyVar = {Name: MyName, Age: 37, Hair: Brown}

                                    Dein JSON hat Fehler. die Anführungsstriche vor den Strings fehlen.
                                    Entweder du definierst es als richtigen String

                                    var myVar = '{Name: "MyName", Age: 37, Hair: "Brown"}';
                                    setState("javascript.0.test", MyVar, true);
                                    

                                    oder als Javascript-Objectliteral welches du dann in einen String umwandelst

                                    var myVar = {
                                        Name: "MyName",
                                        Age: 37,
                                        Hair: "Brown"
                                    }
                                    setState("javascript.0.test", JSON.stringify(myVar), true);
                                    

                                    in beiden Fällen muss man beim auslesen der Daten aus dem Datenpunkt den String wieder in ein Objekt zurückverwandeln

                                    var myVar = JSON.parse(getState("javascript.0.test"));
                                    

                                    Meine Adapter und Widgets
                                    TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                                    Links im Profil

                                    Ben1983B 1 Reply Last reply
                                    0
                                    • OliverIOO OliverIO

                                      @ben1983 sagte in Functions mit optionalen Parametern:

                                      @oliverio OK, wie kann ich denn über createState einen STate mit JSON Inhalt deklarieren, oder eine lokale Variable?

                                      Ziel soll sein, dass ich quasi eine Struktur erzeugen möchte.
                                      Dies gerne durch ein JSON.

                                      Bsp.
                                      MyVar = {Name: MyName, Age: 37, Hair: Brown}

                                      Dein JSON hat Fehler. die Anführungsstriche vor den Strings fehlen.
                                      Entweder du definierst es als richtigen String

                                      var myVar = '{Name: "MyName", Age: 37, Hair: "Brown"}';
                                      setState("javascript.0.test", MyVar, true);
                                      

                                      oder als Javascript-Objectliteral welches du dann in einen String umwandelst

                                      var myVar = {
                                          Name: "MyName",
                                          Age: 37,
                                          Hair: "Brown"
                                      }
                                      setState("javascript.0.test", JSON.stringify(myVar), true);
                                      

                                      in beiden Fällen muss man beim auslesen der Daten aus dem Datenpunkt den String wieder in ein Objekt zurückverwandeln

                                      var myVar = JSON.parse(getState("javascript.0.test"));
                                      
                                      Ben1983B Offline
                                      Ben1983B Offline
                                      Ben1983
                                      wrote on last edited by
                                      #31

                                      @oliverio ok, aber was setzt Du da auf True?
                                      Wie verändert man bspw. den Wert „Age“?

                                      OliverIOO 1 Reply Last reply
                                      0
                                      • Ben1983B Ben1983

                                        @oliverio ok, aber was setzt Du da auf True?
                                        Wie verändert man bspw. den Wert „Age“?

                                        OliverIOO Offline
                                        OliverIOO Offline
                                        OliverIO
                                        wrote on last edited by OliverIO
                                        #32

                                        @ben1983

                                        myVar.Age=11;

                                        Das sind Basics in JavaScript
                                        Ich empfehle dir mal ein Tutorial
                                        https://wiki.selfhtml.org/wiki/JavaScript/Tutorials

                                        Meine Adapter und Widgets
                                        TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                                        Links im Profil

                                        Ben1983B 1 Reply Last reply
                                        0
                                        • paul53P paul53

                                          @alcalzone sagte: So kann man z.B. auch einige Parameter fest vorgeben und den Rest flexibel lassen

                                          Man kann auch alle Parameter fest vorgeben, wenn man bei Nichtvorhandensein einen voreingestellten Wert zuweist.

                                          Bild_2021-04-20_191534.png

                                          AlCalzoneA Offline
                                          AlCalzoneA Offline
                                          AlCalzone
                                          Developer
                                          wrote on last edited by
                                          #33

                                          @paul53 sagte in Functions mit optionalen Parametern:

                                          Man kann auch alle Parameter fest vorgeben, wenn man bei Nichtvorhandensein einen voreingestellten Wert zuweist.

                                          Ohne jetzt eine Glaubensdiskussion vom Zaun brechen zu wollen, aber das gehört mmn. zumindest in die Funktionssignatur. Entweder als default-Parameter

                                          function mytest(immer, manchmal = 0) {
                                           // ...
                                          }
                                          

                                          oder als JSDoc, welches den Parameter als optional deklariert:

                                          /**
                                           * @param {number} [manchmal] Wird nur manchmal mit einer Zahl befüllt
                                           */
                                          function mytest(immer, manchmal) {
                                            if (manchmal === undefined) manchmal = 0;
                                            // ...
                                          }
                                          

                                          In beiden Fällen kann man dort sehen, wo man die Funktion nutzt, welche Parameter nötig sind und muss nicht immer die Implementation nachschlagen und nachvollziehen.

                                          Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

                                          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

                                          431

                                          Online

                                          32.4k

                                          Users

                                          81.4k

                                          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