function* expression

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2016.

Das function* Schlüsselwort kann verwendet werden, um eine Generatorfunktion innerhalb eines Ausdrucks zu definieren.

Sie können Generatorfunktionen auch mithilfe der function*-Deklaration definieren.

Probieren Sie es aus

const foo = function* () {
  yield "a";
  yield "b";
  yield "c";
};

let str = "";
for (const val of foo()) {
  str = str + val;
}

console.log(str);
// Expected output: "abc"

Syntax

js
function* (param0) {
  statements
}
function* (param0, param1) {
  statements
}
function* (param0, param1, /* …, */ paramN) {
  statements
}

function* name(param0) {
  statements
}
function* name(param0, param1) {
  statements
}
function* name(param0, param1, /* …, */ paramN) {
  statements
}

Hinweis: Eine Ausdrucksanweisung kann nicht mit dem Schlüsselwort function beginnen, um Verwechslungen mit einer function*-Deklaration zu vermeiden. Das Schlüsselwort function leitet nur dann einen Ausdruck ein, wenn es in einem Kontext erscheint, der keine Anweisungen akzeptieren kann.

Parameter

name Optional

Der Funktionsname. Kann weggelassen werden, wodurch die Funktion anonym wird. Der Name ist nur lokal im Funktionskörper verfügbar.

paramN Optional

Der Name eines formalen Parameters für die Funktion. Die Syntax der Parameter finden Sie im Leitfaden zu Funktionen.

statements Optional

Die Anweisungen, die den Körper der Funktion ausmachen.

Beschreibung

Ein function*-Ausdruck ist dem function*-Deklaration sehr ähnlich und hat fast die gleiche Syntax. Der Hauptunterschied zwischen einem function*-Ausdruck und einer function*-Deklaration ist der Funktionsname, der in function*-Ausdrücken weggelassen werden kann, um anonyme Funktionen zu erstellen. Ein function*-Ausdruck kann als IIFE (Immediately Invoked Function Expression) verwendet werden, die sofort nach ihrer Definition ausgeführt wird. Dies ermöglicht es Ihnen, ein Ad-hoc-iterierbares Iterator-Objekt zu erstellen. Weitere Informationen finden Sie auch im Kapitel über Funktionen.

Beispiele

Verwendung von function* Ausdruck

Das folgende Beispiel definiert eine unbenannte Generatorfunktion und weist diese x zu. Die Funktion gibt das Quadrat ihres Arguments zurück:

js
const x = function* (y) {
  yield y * y;
};

Spezifikationen

Specification
ECMAScript® 2025 Language Specification
# sec-generator-function-definitions

Browser-Kompatibilität

BCD tables only load in the browser

Siehe auch