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

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. Frage zu Funktionsdeklaration

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    3
    1
    17

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

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

Frage zu Funktionsdeklaration

Scheduled Pinned Locked Moved JavaScript
6 Posts 4 Posters 549 Views 3 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.
  • W Offline
    W Offline
    WolfgangFB
    wrote on last edited by
    #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 Replies Last reply
    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
      wrote on last edited by
      #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 Reply Last reply
      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
        wrote on last edited by 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 Reply Last reply
        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
          wrote on last edited by
          #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 Reply Last reply
          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
            wrote on last edited by
            #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 Reply Last reply
            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
              wrote on last edited by
              #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 Reply Last reply
              1
              Reply
              • Reply as topic
              Log in to reply
              • Oldest to Newest
              • Newest to Oldest
              • Most Votes


              Support us

              ioBroker
              Community Adapters
              Donate

              587

              Online

              32.7k

              Users

              82.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