Expression function*

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.

Le mot-clé function* peut être utilisé pour définir une fonction génératrice à l'intérieur d'une expression.

Exemple interactif

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"

Syntaxe

js
function* [nom]([param1[, param2[,, paramN]]]) {
  instructions
}

Paramètres

nom

Le nom de la fonction. Ce paramètre est optionnel, auquel cas la fonction sera une fonction anonyme. Le nom sera local par rapport au corps de la fonction.

paramN

Le nom d'un argument à passer à la fonction. Une fonction peut avoir jusqu'à 255 arguments.

instructions

Les instructions qui forment le corps de la fonction.

Description

Une expression function* est très semblable à une instruction function*, elle possède également une syntaxe similaire. La différence principale entre une expression function* et une instruction function* est le nom de la fonction. En effet, dans les expressions, le nom peut être omis pour créer une fonction génératrice anonyme. Voir également le chapitre sur les fonctions pour plus d'informations.

Exemples

L'exemple qui suit illustre comment définir une génératrice anonyme et l'affecter à une variable x. Cette fonction génèrera le carré de son argument :

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

Spécifications

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

Compatibilité des navigateurs

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
function* expression
Trailing comma in parameters

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support

Voir aussi