Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • 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

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  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.6k

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

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

Functions mit optionalen Parametern

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
38 Beiträge 6 Kommentatoren 2.4k Aufrufe 5 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • Ben1983B Ben1983

    @oliverio ich möchte quasi eine Anzahl x an festen parametern haben und eine Anzahl x an optionalen.
    Mit dem ... Parameter sind ja theoretisch unendlich viele möglich.
    Wie das im Beispiel von dir geht, verstehe ich nicht, da ist doch gar kein ... mit drin.
    Des Weiteren deklariere ich nirgends einen Typ.
    Alle sind dadurch als any deklariert. Ist für spätere Erweiterungen erst mal nicht schlimm, aber deklariert ihr lieber einen festen Typ? Wenn ja, wie geht das in JS?

    OliverIOO Offline
    OliverIOO Offline
    OliverIO
    schrieb am zuletzt editiert von
    #8

    @ben1983 sagte in Functions mit optionalen Parametern:

    @oliverio ich möchte quasi eine Anzahl x an festen parametern haben und eine Anzahl x an optionalen.
    Mit dem ... Parameter sind ja theoretisch unendlich viele möglich.
    Wie das im Beispiel von dir geht, verstehe ich nicht, da ist doch gar kein ... mit drin.
    Des Weiteren deklariere ich nirgends einen Typ.
    Alle sind dadurch als any deklariert. Ist für spätere Erweiterungen erst mal nicht schlimm, aber deklariert ihr lieber einen festen Typ? Wenn ja, wie geht das in JS?

    Der Spread Operator ... ist Bestandteil von ES6.
    Wenn alle Browser die das benutzen ES6 können, dann alles gut.
    Das was dort beschrieben ist, ist die Methode vor ES6.
    Babel übersetzt den Spread-Operator wahrscheinlich genau in dieses Construct.

    myConcat(", ", "red", "orange", "blue");
    function myConcat(separator) {
      var args = Array.prototype.slice.call(arguments, 1);
      return args.join(separator);
    }
    
    

    Hier wird im Funktionskopf nur der Parameter seperator definiert.
    der slice-Befehl nimmt aus dem arguments-Array dann alle Werte ab dem Index 1 (also alle parameter ausser dem ersten (=separator))
    Damit befindet sich in der Variable args die Werte "red", "orange", "blue", die dann mit join und dem seperator zu einem string verbunden werden.

    Any? Verwendest du Typescript? In Javascript gibt es keinen Typ namens Any

    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 2 Antworten Letzte Antwort
    0
    • OliverIOO OliverIO

      @ben1983 sagte in Functions mit optionalen Parametern:

      @oliverio ich möchte quasi eine Anzahl x an festen parametern haben und eine Anzahl x an optionalen.
      Mit dem ... Parameter sind ja theoretisch unendlich viele möglich.
      Wie das im Beispiel von dir geht, verstehe ich nicht, da ist doch gar kein ... mit drin.
      Des Weiteren deklariere ich nirgends einen Typ.
      Alle sind dadurch als any deklariert. Ist für spätere Erweiterungen erst mal nicht schlimm, aber deklariert ihr lieber einen festen Typ? Wenn ja, wie geht das in JS?

      Der Spread Operator ... ist Bestandteil von ES6.
      Wenn alle Browser die das benutzen ES6 können, dann alles gut.
      Das was dort beschrieben ist, ist die Methode vor ES6.
      Babel übersetzt den Spread-Operator wahrscheinlich genau in dieses Construct.

      myConcat(", ", "red", "orange", "blue");
      function myConcat(separator) {
        var args = Array.prototype.slice.call(arguments, 1);
        return args.join(separator);
      }
      
      

      Hier wird im Funktionskopf nur der Parameter seperator definiert.
      der slice-Befehl nimmt aus dem arguments-Array dann alle Werte ab dem Index 1 (also alle parameter ausser dem ersten (=separator))
      Damit befindet sich in der Variable args die Werte "red", "orange", "blue", die dann mit join und dem seperator zu einem string verbunden werden.

      Any? Verwendest du Typescript? In Javascript gibt es keinen Typ namens Any

      Ben1983B Offline
      Ben1983B Offline
      Ben1983
      schrieb am zuletzt editiert von
      #9

      @oliverio wenn ich im JS in iobroker mit der Maus über die Funktion gehe, dann wird dort Type Any angezeigt.
      ............
      Das bedeutet ich kann jeder Functions soviel Parameter übergeben wie ich mag?
      Ist ja einerseits toll, aber wie soll derjenige, der die Funktion nicht selbst erstellt hat das dann durchblicken?

      OliverIOO 1 Antwort Letzte Antwort
      0
      • Ben1983B Ben1983

        @oliverio wenn ich im JS in iobroker mit der Maus über die Funktion gehe, dann wird dort Type Any angezeigt.
        ............
        Das bedeutet ich kann jeder Functions soviel Parameter übergeben wie ich mag?
        Ist ja einerseits toll, aber wie soll derjenige, der die Funktion nicht selbst erstellt hat das dann durchblicken?

        OliverIOO Offline
        OliverIOO Offline
        OliverIO
        schrieb am zuletzt editiert von OliverIO
        #10

        @ben1983 sagte in Functions mit optionalen Parametern:

        @oliverio wenn ich im JS in iobroker mit der Maus über die Funktion gehe, dann wird dort Type Any angezeigt.
        ............
        Das bedeutet ich kann jeder Functions soviel Parameter übergeben wie ich mag?

        im Prinzip ja. maximal wahrscheinlich mehr als du je brauchen kannst
        https://stackoverflow.com/questions/22747068/is-there-a-max-number-of-arguments-javascript-functions-can-accept

        Ist ja einerseits toll, aber wie soll derjenige, der die Funktion nicht selbst erstellt hat das dann durchblicken?

        wenn andere es benutzen sollen, dann sollte es eine dokumentation (auch inline) geben. wie bspw hier zu iobroker
        https://github.com/ioBroker/ioBroker.js-controller/blob/af51b33f700f2a3ba880e5f343fd70a208bbe497/doc/adapter.js.html#L3368

        mit Zusatzhilfsmitteln kann man aus solchen Notationen auch automatisch eine Hilfe erzeugen lassen.
        Es gibt dafür sogar Standards (kannst ja mal nach JSDoc suchen)

        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 Antwort Letzte Antwort
        0
        • OliverIOO OliverIO

          @ben1983 sagte in Functions mit optionalen Parametern:

          @oliverio ich möchte quasi eine Anzahl x an festen parametern haben und eine Anzahl x an optionalen.
          Mit dem ... Parameter sind ja theoretisch unendlich viele möglich.
          Wie das im Beispiel von dir geht, verstehe ich nicht, da ist doch gar kein ... mit drin.
          Des Weiteren deklariere ich nirgends einen Typ.
          Alle sind dadurch als any deklariert. Ist für spätere Erweiterungen erst mal nicht schlimm, aber deklariert ihr lieber einen festen Typ? Wenn ja, wie geht das in JS?

          Der Spread Operator ... ist Bestandteil von ES6.
          Wenn alle Browser die das benutzen ES6 können, dann alles gut.
          Das was dort beschrieben ist, ist die Methode vor ES6.
          Babel übersetzt den Spread-Operator wahrscheinlich genau in dieses Construct.

          myConcat(", ", "red", "orange", "blue");
          function myConcat(separator) {
            var args = Array.prototype.slice.call(arguments, 1);
            return args.join(separator);
          }
          
          

          Hier wird im Funktionskopf nur der Parameter seperator definiert.
          der slice-Befehl nimmt aus dem arguments-Array dann alle Werte ab dem Index 1 (also alle parameter ausser dem ersten (=separator))
          Damit befindet sich in der Variable args die Werte "red", "orange", "blue", die dann mit join und dem seperator zu einem string verbunden werden.

          Any? Verwendest du Typescript? In Javascript gibt es keinen Typ namens Any

          Ben1983B Offline
          Ben1983B Offline
          Ben1983
          schrieb am zuletzt editiert von
          #11

          @oliverio wieso kann man jetzt hier mehr als einen Parameter übergeben?
          Sehe nur „Seperator“.... Gruß Ben

          OliverIOO 1 Antwort Letzte Antwort
          0
          • Ben1983B Ben1983

            @oliverio wieso kann man jetzt hier mehr als einen Parameter übergeben?
            Sehe nur „Seperator“.... Gruß Ben

            OliverIOO Offline
            OliverIOO Offline
            OliverIO
            schrieb am zuletzt editiert von
            #12

            @ben1983 sagte in Functions mit optionalen Parametern:

            @oliverio wieso kann man jetzt hier mehr als einen Parameter übergeben?
            Sehe nur „Seperator“.... Gruß Ben

            Lese einfach mal die Seite die ich oben verlinkt habe.
            Die stehen alle in der bereits erwähnten Variable „arguments“ drin. Du selbst kannst keine Variable so nennen. Sie gehört zum sprachkonstrukt von javascript

            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 Antwort Letzte Antwort
            0
            • OliverIOO OliverIO

              @ben1983 sagte in Functions mit optionalen Parametern:

              @oliverio wieso kann man jetzt hier mehr als einen Parameter übergeben?
              Sehe nur „Seperator“.... Gruß Ben

              Lese einfach mal die Seite die ich oben verlinkt habe.
              Die stehen alle in der bereits erwähnten Variable „arguments“ drin. Du selbst kannst keine Variable so nennen. Sie gehört zum sprachkonstrukt von javascript

              Ben1983B Offline
              Ben1983B Offline
              Ben1983
              schrieb am zuletzt editiert von
              #13

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

              OliverIOO 1 Antwort Letzte Antwort
              0
              • Ben1983B Ben1983

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

                OliverIOO Offline
                OliverIOO Offline
                OliverIO
                schrieb am zuletzt editiert von
                #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 Antwort Letzte Antwort
                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
                  schrieb am zuletzt editiert von
                  #15

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

                  OliverIOO 1 Antwort Letzte Antwort
                  0
                  • Ben1983B Ben1983

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

                    OliverIOO Offline
                    OliverIOO Offline
                    OliverIO
                    schrieb am zuletzt editiert von
                    #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 Antwort Letzte Antwort
                    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
                      schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
                      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
                        schrieb am zuletzt editiert von
                        #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 Antwort Letzte Antwort
                        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
                          schrieb am zuletzt editiert von
                          #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 Antwort Letzte Antwort
                          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
                            schrieb am zuletzt editiert von
                            #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 Antwort Letzte Antwort
                            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
                              schrieb am zuletzt editiert von
                              #21

                              @oliverio bei mir leider nicht.

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

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

                              OliverIOO 1 Antwort Letzte Antwort
                              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
                                schrieb am zuletzt editiert von
                                #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 Antwort Letzte Antwort
                                0
                                • OliverIOO OliverIO

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

                                  Ben1983B Offline
                                  Ben1983B Offline
                                  Ben1983
                                  schrieb am zuletzt editiert von
                                  #23

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

                                  OliverIOO 1 Antwort Letzte Antwort
                                  0
                                  • Ben1983B Ben1983

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

                                    OliverIOO Offline
                                    OliverIOO Offline
                                    OliverIO
                                    schrieb am zuletzt editiert von
                                    #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 Antwort Letzte Antwort
                                    0
                                    • AlCalzoneA Offline
                                      AlCalzoneA Offline
                                      AlCalzone
                                      Developer
                                      schrieb am zuletzt editiert von
                                      #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 Antworten Letzte Antwort
                                      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
                                        schrieb am zuletzt editiert von
                                        #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 Antwort Letzte Antwort
                                        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
                                          schrieb am zuletzt editiert von
                                          #27

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

                                          OliverIOO 1 Antwort Letzte Antwort
                                          0
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          858

                                          Online

                                          32.4k

                                          Benutzer

                                          81.5k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Home
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe