W3docs

JavaScript-Funktionen

JavaScript-Funktionen: Deklarationen, Ausdrücke, Pfeilfunktionen, Parameter, Standardwerte, Rest-Parameter, Rückgabewerte, Hoisting und Scope mit Beispielen.

Einführung in JavaScript-Funktionen

Eine Funktion ist ein wiederverwendbarer Codeblock, der eine bestimmte Aufgabe erfüllt. Anstatt dieselben Anweisungen überall zu wiederholen, schreibt man sie einmal, gibt ihnen einen Namen und ruft sie bei Bedarf auf, indem man die Funktion aufruft. Funktionen sind eines der grundlegenden Bausteine von JavaScript: Sie ermöglichen es, Code zu organisieren, Wiederholungen zu vermeiden und komplexe Programme aus kleinen, testbaren Einheiten aufzubauen.

Dieses Kapitel behandelt, wie man Funktionen definiert, Daten mit Parametern übergibt, Daten mit return zurückgibt, und die drei Hauptformen, die im echten Code vorkommen: Deklarationen, Ausdrücke und Pfeilfunktionen. Außerdem werden Hoisting und Scope erklärt — zwei Verhaltensweisen, die Anfänger oft überraschen.

Eine Funktion definieren

Grundlegende Funktionssyntax

Eine Funktionsdeklaration verwendet das Schlüsselwort function, gefolgt von einem Namen, einer durch Kommas getrennten Liste von Parametern in runden Klammern und einem Block von Anweisungen in geschweiften Klammern. Der Block wird nur ausgeführt, wenn die Funktion aufgerufen wird — geschrieben als Funktionsname gefolgt von runden Klammern.

function greet() {
    console.log("Hello, World!");
}

greet(); // call the function → Outputs: Hello, World!

Eine Funktion zu definieren tut von sich aus nichts; es wird nichts ausgegeben, bis greet() ausgeführt wird.

Funktions-Hoisting

Funktions-Deklarationen werden gehoisted: Die Engine registriert sie, bevor ein Code ausgeführt wird, sodass man eine Deklaration auch in einer Zeile aufrufen kann, die vor ihrer Definition steht.

javascript— editable

Dies gilt nicht für Funktionsausdrücke oder Pfeilfunktionen (weiter unten behandelt) — diese sind erst verfügbar, nachdem die Zeile, die sie zuweist, ausgeführt wurde. Ein früherer Aufruf löst einen ReferenceError oder TypeError aus. Wenn Sie mehr darüber erfahren möchten, warum das passiert, lesen Sie Variablen-Scope.

Funktionsparameter und Argumente

Ein Parameter ist ein Name, der in der Funktionsdefinition aufgeführt wird; ein Argument ist der tatsächliche Wert, den man beim Aufruf übergibt. Innerhalb des Funktionskörpers verhalten sich Parameter wie lokale Variablen.

Parameter übergeben

javascript— editable

Wenn man eine Funktion mit weniger Argumenten als Parametern aufruft, sind die fehlenden undefined und kein Fehler:

javascript— editable

Standardparameter

Um undefined zu vermeiden, erlaubt ES6, einem Parameter einen Standardwert zu geben, der nur verwendet wird, wenn kein Argument (oder undefined) übergeben wird.

javascript— editable

Rest-Parameter

Ein Rest-Parameter (geschrieben ...name) sammelt eine beliebige Anzahl verbleibender Argumente in einem echten array, sodass eine Funktion eine variable Anzahl von Eingaben akzeptieren kann. Er muss der letzte Parameter sein.

javascript— editable

Rest-Parameter teilen die Syntax mit dem Spread-Operator, erfüllen aber den entgegengesetzten Zweck. Lesen Sie Rest-Parameter und Spread-Syntax für das vollständige Bild.

Die Return-Anweisung

Eine Funktion kann mit return einen Wert an den Aufrufer zurückgeben. Der zurückgegebene Wert kann in einer Variablen gespeichert oder direkt in einem Ausdruck verwendet werden.

javascript— editable

return stoppt die Funktion sofort — jeder Code danach wird übersprungen. Eine Funktion ohne return (oder mit einem einfachen return;) liefert undefined.

javascript— editable

Anonyme Funktionen und Ausdrücke

Funktionsausdrücke

Ein Funktionsausdruck speichert eine Funktion in einer Variablen. Anders als eine Deklaration wird die Funktion erst erstellt, wenn die Ausführung diese Zeile erreicht, daher wird sie nicht gehoisted — man kann sie erst danach aufrufen.

javascript— editable

Anonyme Funktionen

Die obige Funktion hatte keinen Namen — das ist eine anonyme Funktion. Sie sind häufig als Argumente für andere Funktionen anzutreffen, zum Beispiel als Callbacks, die an array-Methoden wie forEach oder an setTimeout übergeben werden. (Siehe Einführung in Callbacks.)

javascript— editable

Pfeilfunktionen in ES6

Syntax der Pfeilfunktionen

ES6 hat Pfeilfunktionen eingeführt, eine prägnante Syntax für Funktionsausdrücke. Wenn der Körper ein einzelner Ausdruck ist, können die geschweiften Klammern und das Schlüsselwort return weggelassen werden — der Wert des Ausdrucks wird automatisch zurückgegeben.

javascript— editable

Pfeilfunktionen haben kein eigenes this

Pfeilfunktionen binden kein eigenes this; sie erben es aus dem umgebenden Scope. Das macht sie ideal als Callbacks innerhalb von Objektmethoden, wo eine reguläre Funktion das this des Objekts verlieren würde.

javascript— editable

Weitere Informationen dazu, wie this innerhalb von Methoden aufgelöst wird, finden Sie unter Objektmethoden, this.

Die richtige Form wählen

  • Funktionsdeklaration (function foo() {}) — wird gehoisted, gut für benannte Hilfsfunktionen auf oberster Ebene, die von überall aufgerufen werden können.
  • Funktionsausdruck (const foo = function() {}) — wird an Ort und Stelle erstellt; nützlich, wenn man eine Funktion bedingt zuweisen oder übergeben möchte.
  • Pfeilfunktion (const foo = () => {}) — kürzeste Syntax, kein eigenes this; bevorzugt für kurze Callbacks.

Funktionen sind auch die Grundlage für fortgeschrittene Muster wie Closures und Rekursion.

Fazit

Funktionen ermöglichen es, Logik einmal zu verpacken und überall wiederzuverwenden. Sie haben gesehen, wie man sie definiert, Argumente übergibt (einschließlich Standardwerte und Rest-Parameter), Ergebnisse zurückgibt und die Unterschiede zwischen Deklarationen, Ausdrücken und Pfeilfunktionen — sowie das Hoisting- und this-Verhalten, das sie voneinander unterscheidet. Diese Formen zu beherrschen ist ein grundlegender Schritt hin zu sauberem, wartbarem JavaScript.

Übungen

Übung
Was trifft laut dem W3Docs-Artikel auf JavaScript-Funktionen zu?
Was trifft laut dem W3Docs-Artikel auf JavaScript-Funktionen zu?
Was this page helpful?