Movatterモバイル変換


[0]ホーム

URL:


  1. Web
  2. JavaScript
  3. Référence
  4. Objets natifs standards
  5. Generator

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

View in EnglishAlways switch to English

Generator

Baseline Widely available

Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis ⁨septembre 2016⁩.

L'objetGenerator est renvoyé par unefonction génératrice, c'est à la foisun itérateur etun itérable.

Syntaxe

js
function* gen() {  yield 1;  yield 2;  yield 3;}var g = gen(); // "Generator { }"

Méthodes

Generator.prototype.next()

Renvoie une valeur générée par l'expressionyield.

Generator.prototype.return()

Renvoie la valeur donnée et termine le générateur.

Generator.prototype.throw()

Lève une exception dans un générateur. Cette opération termine le générateur, sauf si l'exception est interceptée dans le générateur.

Exemple

Un itérateur infini

js
function* idMaker() {  var index = 0;  while (true) yield index++;}var gen = idMaker(); // "Generator { }"console.log(gen.next().value); // 0console.log(gen.next().value); // 1console.log(gen.next().value); // 2// ...

Générateurs historiques

Firefox (SpiderMonkey) implémente également une version antérieure pour les générateurs avecJavaScript 1.7. Pour cette syntaxe, il n'y a pas besoin d'utiliser l'astérisque dans la déclaration de la fonction, il suffit d'utiliser le mot-cléyield dans le corps de la fonction. Les générateurs historiques sont une fonctionnalité dépréciée et seront supprimés à l'avenir (bug Firefox 1083482), il est fortement déconseillé de les utiliser.

Méthodes pour les générateurs historiques

Generator.prototype.next()Non standard

Renvoie une valeur générée par l'expressionyield. Cette méthode correspond ànext() pour les générateurs ES2015.

Generator.prototype.close()Non standard

Clôture le générateur, tout appel ultérieur ànext() renverra une exceptionStopIteration. Cela correspond à la méthodereturn() pour les générateurs ES2015.

Generator.prototype.send()Non standard

Utilisée pour envoyer une valeur à un générateur. La valeur est renvoyée avec une expressionyield et renvoie une valeur générée par la prochaine expressionyield.send(x) correspond ànext(x) pour les générateurs ES2015.

Generator.prototype.throw()Non standard

Lève une exception au sein d'un générateur. Cela correspond à la méthodethrow() pour les générateurs ES2015.

Exemple utilisant un générateur historique

js
function* fibonacci() {  var a = yield 1;  yield a * 2;}var it = fibonacci();console.log(it); // "Generator {  }"console.log(it.next()); // 1console.log(it.send(10)); // 20console.log(it.close()); // undefinedconsole.log(it.next()); // throws StopIteration (le générateur est clôturé)

Spécifications

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

Compatibilité des navigateurs

Voir aussi

Générateurs historiques

Générateurs ES2015

Help improve MDN

Learn how to contribute

Cette page a été modifiée le par lescontributeurs du MDN.


[8]ページ先頭

©2009-2025 Movatter.jp