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. JavaScript
  5. Frage zu Funktionsdeklaration

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    16
    1
    1.3k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    780

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.0k

Frage zu Funktionsdeklaration

Geplant Angeheftet Gesperrt Verschoben JavaScript
6 Beiträge 4 Kommentatoren 502 Aufrufe 3 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.
  • W Offline
    W Offline
    WolfgangFB
    schrieb am zuletzt editiert von
    #1

    Hallo

    Ich habe eine für mich neue Syntax für einen Funktionsdeklaration beim googeln entdeckt und frage mich jetzt, ob es einen prinzipiellen Unterschied zwischen beiden Methoden gibt oder ob eine schneller als die andere, performanter oder was auch immer ist.
    Den einzigen Unterschied den ich bisher festgestellt habe ist, dass die Deklaration mit "function" auh nach dem Aufruf kommen kann währen die mit "const" immer vor dem Aufruf deklariert sein muss.

    const summe = (x, y) => {
        return x+y;
    };
    
    function summe2(x, y){
        return x+y;
        }
    
    console.log(summe(5,4));
    console.log(summe2(5,4));
    

    Es kommt (bisher) immer das richtige Ergebnis raus.

    CodierknechtC paul53P OliverIOO 3 Antworten Letzte Antwort
    0
    • W WolfgangFB

      Hallo

      Ich habe eine für mich neue Syntax für einen Funktionsdeklaration beim googeln entdeckt und frage mich jetzt, ob es einen prinzipiellen Unterschied zwischen beiden Methoden gibt oder ob eine schneller als die andere, performanter oder was auch immer ist.
      Den einzigen Unterschied den ich bisher festgestellt habe ist, dass die Deklaration mit "function" auh nach dem Aufruf kommen kann währen die mit "const" immer vor dem Aufruf deklariert sein muss.

      const summe = (x, y) => {
          return x+y;
      };
      
      function summe2(x, y){
          return x+y;
          }
      
      console.log(summe(5,4));
      console.log(summe2(5,4));
      

      Es kommt (bisher) immer das richtige Ergebnis raus.

      CodierknechtC Online
      CodierknechtC Online
      Codierknecht
      Developer Most Active
      schrieb am zuletzt editiert von
      #2

      @wolfgangfb
      Auch wenn das eine nette Spielerei zu sein scheint: Ich würd‘s lassen und Funktionen „klassisch“ deklarieren.
      Es liest sich einfacher. Und das reicht mir als Grund bereits völlig, denn Code muss vor allem les- und damit gut wartbar sein.
      Selbst wenn das minimale Performancevorteile bringt: Man hüte sich vor unnötigen Optimierungen. Die bringen in der Regel mehr Ärger als Nutzen.

      https://www.freecodecamp.org/news/constant-confusion-why-i-still-use-javascript-function-statements-984ece0b72fd

      "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

      Proxmox 9.1.1 LXC|8 GB|Core i7-6700
      HmIP|ZigBee|Tasmota|Unifi
      Zabbix Certified Specialist
      Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

      1 Antwort Letzte Antwort
      0
      • W WolfgangFB

        Hallo

        Ich habe eine für mich neue Syntax für einen Funktionsdeklaration beim googeln entdeckt und frage mich jetzt, ob es einen prinzipiellen Unterschied zwischen beiden Methoden gibt oder ob eine schneller als die andere, performanter oder was auch immer ist.
        Den einzigen Unterschied den ich bisher festgestellt habe ist, dass die Deklaration mit "function" auh nach dem Aufruf kommen kann währen die mit "const" immer vor dem Aufruf deklariert sein muss.

        const summe = (x, y) => {
            return x+y;
        };
        
        function summe2(x, y){
            return x+y;
            }
        
        console.log(summe(5,4));
        console.log(summe2(5,4));
        

        Es kommt (bisher) immer das richtige Ergebnis raus.

        paul53P Offline
        paul53P Offline
        paul53
        schrieb am zuletzt editiert von paul53
        #3

        @wolfgangfb sagte: die mit "const" immer vor dem Aufruf deklariert sein muss.

        Man sollte Variablen und Funktionen immer vor ihrer Verwendung / ihrem Aufruf deklarieren, damit man dem Compiler einen unnötigen Durchlauf erspart. Mit let und const muss vor der Verwendung deklariert werden.

        @wolfgangfb sagte in Frage zu Funktionsdeklaration:

        ob eine schneller als die andere, performanter

        Das Compiler-Ergebnis wird wahrscheinlich identisch sein.

        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

        1 Antwort Letzte Antwort
        0
        • W WolfgangFB

          Hallo

          Ich habe eine für mich neue Syntax für einen Funktionsdeklaration beim googeln entdeckt und frage mich jetzt, ob es einen prinzipiellen Unterschied zwischen beiden Methoden gibt oder ob eine schneller als die andere, performanter oder was auch immer ist.
          Den einzigen Unterschied den ich bisher festgestellt habe ist, dass die Deklaration mit "function" auh nach dem Aufruf kommen kann währen die mit "const" immer vor dem Aufruf deklariert sein muss.

          const summe = (x, y) => {
              return x+y;
          };
          
          function summe2(x, y){
              return x+y;
              }
          
          console.log(summe(5,4));
          console.log(summe2(5,4));
          

          Es kommt (bisher) immer das richtige Ergebnis raus.

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

          @wolfgangfb

          es gibt schon ein Unterschied zwischen den beiden Deklarationen.
          https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions?retiredLocale=de
          der wichtigste Unterschied ist der erste, das eine Arrow-Funktion keinen eigenen neuen Context oder Scope erzeugt. Das hilft insbesondere bei Callback oder bei Promise-Verwendung, das man bspw this nicht separat (per bind) übergeben muss.
          Ich denke Performance macht es keinerlei Unterschied.
          Function erzeugt ein eigenes (Function-) Objekt auf das man wieder Funktionen verwenden kann, was bei Arrow nicht geht.
          https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function?retiredLocale=de

          Auch zwischen let und var gibt es einen Unterschied.
          Bei var wird hoisting angewendet. dh alle var Deklarationen innerhalb eines Funktionsblocks werden eingesammelt und so getan als ob sie am Anfang schon gemacht worden sind.
          Bei let gilt die Deklaration erst ab der Stelle wo sie tatsächlich auch steht.
          Auch bei der Scope-Betrachtung gibt es einen Unterschied.
          https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/let?retiredLocale=de

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

          CodierknechtC 1 Antwort Letzte Antwort
          1
          • OliverIOO OliverIO

            @wolfgangfb

            es gibt schon ein Unterschied zwischen den beiden Deklarationen.
            https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions?retiredLocale=de
            der wichtigste Unterschied ist der erste, das eine Arrow-Funktion keinen eigenen neuen Context oder Scope erzeugt. Das hilft insbesondere bei Callback oder bei Promise-Verwendung, das man bspw this nicht separat (per bind) übergeben muss.
            Ich denke Performance macht es keinerlei Unterschied.
            Function erzeugt ein eigenes (Function-) Objekt auf das man wieder Funktionen verwenden kann, was bei Arrow nicht geht.
            https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function?retiredLocale=de

            Auch zwischen let und var gibt es einen Unterschied.
            Bei var wird hoisting angewendet. dh alle var Deklarationen innerhalb eines Funktionsblocks werden eingesammelt und so getan als ob sie am Anfang schon gemacht worden sind.
            Bei let gilt die Deklaration erst ab der Stelle wo sie tatsächlich auch steht.
            Auch bei der Scope-Betrachtung gibt es einen Unterschied.
            https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/let?retiredLocale=de

            CodierknechtC Online
            CodierknechtC Online
            Codierknecht
            Developer Most Active
            schrieb am zuletzt editiert von
            #5

            @oliverio sagte in Frage zu Funktionsdeklaration:

            eine Arrow-Funktion keinen eigenen neuen Context oder Scope erzeugt

            Wobei ich das nicht unbedingt als Vorteil sehe.
            Wenn der Scope nicht mehr so klar ist, führt das (meiner Ansicht nach) gerne mal dazu, dass unerwünschte Seiteneffekte entstehen.
            Bei uns gilt die Regel, den Scope so klein wie nur möglich zu halten. Darum meckert unsere statische Codeanalyse z.B. auch globale Variablen an und bricht dann Continuous-Integration ab. Ich weiß aber nicht, ob das hier vergleichbar ist - bin halt in JS noch nicht so fit.

            @oliverio sagte in Frage zu Funktionsdeklaration:

            alle var Deklarationen innerhalb eines Funktionsblocks werden eingesammelt und so getan als ob sie am Anfang schon gemacht worden sind

            Darum liebe ich mein Delphi :hearts: Hier müssen alle Variablen im Kopf einer Methode deklariert werden.
            Ich habe schon immer ein Problem mit "Variablen werden unmittelbar vor ihrer ersten Verwendung deklariert". Die tauchen dann später irgendwo auf und man muss die passende Deklaration erst suchen.

            "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

            Proxmox 9.1.1 LXC|8 GB|Core i7-6700
            HmIP|ZigBee|Tasmota|Unifi
            Zabbix Certified Specialist
            Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

            W 1 Antwort Letzte Antwort
            0
            • CodierknechtC Codierknecht

              @oliverio sagte in Frage zu Funktionsdeklaration:

              eine Arrow-Funktion keinen eigenen neuen Context oder Scope erzeugt

              Wobei ich das nicht unbedingt als Vorteil sehe.
              Wenn der Scope nicht mehr so klar ist, führt das (meiner Ansicht nach) gerne mal dazu, dass unerwünschte Seiteneffekte entstehen.
              Bei uns gilt die Regel, den Scope so klein wie nur möglich zu halten. Darum meckert unsere statische Codeanalyse z.B. auch globale Variablen an und bricht dann Continuous-Integration ab. Ich weiß aber nicht, ob das hier vergleichbar ist - bin halt in JS noch nicht so fit.

              @oliverio sagte in Frage zu Funktionsdeklaration:

              alle var Deklarationen innerhalb eines Funktionsblocks werden eingesammelt und so getan als ob sie am Anfang schon gemacht worden sind

              Darum liebe ich mein Delphi :hearts: Hier müssen alle Variablen im Kopf einer Methode deklariert werden.
              Ich habe schon immer ein Problem mit "Variablen werden unmittelbar vor ihrer ersten Verwendung deklariert". Die tauchen dann später irgendwo auf und man muss die passende Deklaration erst suchen.

              W Offline
              W Offline
              WolfgangFB
              schrieb am zuletzt editiert von
              #6

              @codierknecht sagte in Frage zu Funktionsdeklaration:

              Darum liebe ich mein Delphi :hearts: Hier müssen alle Variablen im Kopf einer Methode deklariert werden.

              Du sprichst mir so sehr aus dem Herzen. Meine "Muttersprache" ist auch Delphi und ich liebe es, dass jeder noch so popelige Typecast immer explizit angegeben werden muss und jede Veriable ganz klar am Anfang definiert sein muss und ein Int ist ein Int wird nicht irgendwann zu einem String oder einem Array.

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


              Support us

              ioBroker
              Community Adapters
              Donate

              798

              Online

              32.6k

              Benutzer

              82.0k

              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