Movatterモバイル変換


[0]ホーム

URL:


MDN Web Docs

Cette page a été traduite à partir de l'anglais par la communauté. Vous pouvez également contribuer en rejoignant la communauté francophone sur MDN Web Docs.

GeneratorFunction

BaselineWidely available

En JavaScript, chaque fonction génératrice est en réalité un objetGeneratorFunction. Il n'existe pas d'objet global avec le nomGeneratorFunction, mais il est possible de créer un constructeurGeneratorFunction() avec le code suivant :

js
const GeneratorFunction = Object.getPrototypeOf(function* () {}).constructor;

Description

Lesfonctions génératrices créées avec un constructeur sont analysées à la création de la fonction. Il s'agit là d'une méthode moins efficace qu'une déclaration de fonction génératrice avecune expressionfunction* qu'on appelle dans le code. En effet, de telles fonctions sont alors analysées avec le reste du code.

Tous les arguments passés à la fonction sont traités comme les noms des identifiants des paramètres de la fonction à créer, dans l'ordre dans lequel ils sont passés.

Note :Lesfonctions génératrices créées avec un constructeur ne créent pas de fermetures avec leur contexte de création. Elles sont toujours créées dans la portée globale.

Lors de leur exécution, elles ne pourront accéder qu'à leurs variables locales et aux variables globales, pas à celles de la portée dans laquelle le constructeur a été appelé.

Il y a donc une différence de comportement par rapport à une expressioneval() qui contiendrait une expression de fonction génératrice.

Invoquer un constructeur de fonction génératrice comme une fonction (sans utilisernew) aura le même effet que d'appeler le constructeur.

Exemples

Créer un générateur en utilisant le constructeurGeneratorFunction()

js
const GeneratorFunction = Object.getPrototypeOf(function* () {}).constructor;const g = new GeneratorFunction("a", "yield a * 2");const iterator = g(10);console.log(iterator.next().value); // 20

Spécifications

Specification
ECMAScript® 2026 Language Specification
# sec-generatorfunction-objects

Compatibilité des navigateurs

Voir aussi

Help improve MDN

Learn how to contribute.

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2025 Movatter.jp