Start · Sprachen · JavaScript · Referenz · return

return

Anweisung

Die <code>return</code>-Anweisung beendet die Ausführung einer Funktion und legt einen Wert fest, der an den Aufrufer der Funktion zurückgegeben wird.

seit JavaScript ES1 Kategorie: syntax

Signatur

return; return expression;

Beschreibung

Die return-Anweisung beendet die Ausführung einer Funktion und legt einen Wert fest, der an den Aufrufer der Funktion zurückgegeben wird.

Die return-Anweisung kann nur innerhalb von Funktionskörpern verwendet werden. Wenn eine return-Anweisung in einem Funktionskörper verwendet wird, wird die Ausführung der Funktion gestoppt. Die return-Anweisung hat unterschiedliche Auswirkungen, wenn sie in verschiedenen Funktionsarten platziert wird:

  • In einer einfachen Funktion ergibt der Aufruf dieser Funktion den Rückgabewert.
  • In einer async function wird das erzeugte Promise mit dem zurückgegebenen Wert resolved.
  • In einer generator function gibt die next()-Methode des erzeugten Generator-Objekts { done: true, value: returnedValue } zurück.
  • In einer async generator function gibt die next()-Methode des erzeugten Async-Generator-Objekts ein Promise zurück, das mit { done: true, value: returnedValue } erfüllt wird.

Wenn eine return-Anweisung innerhalb eines try-Blocks ausgeführt wird, wird zunächst der zugehörige finally-Block, sofern vorhanden, ausgeführt, bevor der Wert tatsächlich zurückgegeben wird.

Automatic semicolon insertion

Die Syntax verbietet Zeilenumbrüche zwischen dem Schlüsselwort return und dem zurückzugebenden Ausdruck.

Der folgende Code wird durch automatic semicolon insertion (ASI) umgewandelt:

return\na + b; wird zu return;\na + b;

Dadurch gibt die Funktion undefined zurück und der Ausdruck a + b wird niemals ausgewertet. Dies kann eine Warnung in der Konsole erzeugen.

Um dieses Problem zu vermeiden (um ASI zu verhindern), können Sie Klammern verwenden:

return (\n a + b\n);

Parameter

Name Typ Default Beschreibung
$expression any — Der Ausdruck, dessen Wert zurückgegeben werden soll. Wenn er weggelassen wird, wird undefined zurückgegeben.

Rückgabewert

Typ
any
Beschreibung
Der Wert, der an den Aufrufer übergeben wird. Ohne Ausdruck ist der Rückgabewert undefined. In einer async-Funktion wird der Wert stets in ein Promise eingewickelt.

Beispiele

Eine Funktion unterbrechen

function counter() {
  // Infinite loop
  for (let count = 1; ; count++) {
    console.log(`${count}A`); // Until 5
    if (count === 5) {
      return;
    }
    console.log(`${count}B`); // Until 4
  }
  console.log(`${count}C`); // Never appears
}

counter();

// Logs:
// 1A
// 1B
// 2A
// 2B
// 3A
// 3B
// 4A
// 4B
// 5A
1A 1B 2A 2B 3A 3B 4A 4B 5A

Eine Funktion zurückgeben

function magic() {
  return function calc(x) {
    return x * 42;
  };
}

const answer = magic();
answer(1337); // 56154

// Wichtig · Fallstricke

ASI-Falle: JavaScript's Automatic Semicolon Insertion ist die häufigste Fehlerquelle im Zusammenhang mit return. Steht nach dem Schlüsselwort return ein Zeilenumbruch (ohne Ausdruck auf derselben Zeile), behandelt der Parser dies als return; und gibt undefined zurück. Beginne den Rückgabe-Ausdruck immer auf derselben Zeile wie return oder nutze eine öffnende Klammer als erstes Zeichen des Ausdrucks.

Konstruktoren: In einer mit new aufgerufenen Konstruktorfunktion wird ein primitiver Rückgabewert (z. B. return 42;) stillschweigend ignoriert — die neue Instanz wird dennoch zurückgegeben. Wird dagegen ein Objekt zurückgegeben, ersetzt dieses die neu erzeugte Instanz vollständig.

Arrow Functions ohne geschweifte Klammern: In Kurzform-Arrow-Functions (() => ausdruck) ist kein explizites return nötig — der Ausdruck wird implizit zurückgegeben. Ein explizites return in dieser Form führt zu einem SyntaxError.