From bf8e099b9c8b3c60d60b3712b4fc97b052c39887 Mon Sep 17 00:00:00 2001 From: julieng Date: Tue, 3 Aug 2021 08:03:23 +0200 Subject: convert content to md --- .../reference/operators/yield_star_/index.md | 137 +++++++++------------ 1 file changed, 59 insertions(+), 78 deletions(-) (limited to 'files/fr/web/javascript/reference/operators/yield_star_') diff --git a/files/fr/web/javascript/reference/operators/yield_star_/index.md b/files/fr/web/javascript/reference/operators/yield_star_/index.md index 0ce1a73abd..86ad5717d8 100644 --- a/files/fr/web/javascript/reference/operators/yield_star_/index.md +++ b/files/fr/web/javascript/reference/operators/yield_star_/index.md @@ -12,34 +12,33 @@ tags: translation_of: Web/JavaScript/Reference/Operators/yield* original_slug: Web/JavaScript/Reference/Opérateurs/yield* --- -
{{jsSidebar("Operators")}}
+{{jsSidebar("Operators")}} -

Une expression yield* est utilisée afin de déléguer le mécanisme d'itération/génération à un autre {{jsxref("Instructions/function*", "générateur")}} ou à un autre objet itérable.

+Une **expression `yield*`** est utilisée afin de déléguer le mécanisme d'itération/génération à un autre {{jsxref("Instructions/function*", "générateur")}} ou à un autre objet itérable. -
{{EmbedInteractiveExample("pages/js/expressions-yieldasterisk.html")}}
+{{EmbedInteractiveExample("pages/js/expressions-yieldasterisk.html")}} -

Syntaxe

+## Syntaxe -
 yield* [[expression]];
+ yield* [[expression]]; -
-
expression
-
L'expression qui renvoie un objet itérable.
-
+- `expression` + - : L'expression qui renvoie un objet itérable. -

Description

+## Description -

L'expression yield* itère sur l'opérande et génère chaque valeur générée par l'opérande.

+L'expression `yield*` itère sur l'opérande et génère chaque valeur générée par l'opérande. -

La valeur de l'expression yield* est la valeur renvoyée par l'itérateur lorsque celui est terminé (la propriété done vaut true).

+La valeur de l'expression `yield*` est la valeur renvoyée par l'itérateur lorsque celui est terminé (la propriété `done` vaut `true`). -

Exemples

+## Exemples -

Délégation de la génération

+### Délégation de la génération -

Dans le code suivant, les valeurs générées par g1() sont renvoyées grâce aux appels à la fonction next(), comme pour celles renvoyées par g2().

+Dans le code suivant, les valeurs générées par `g1()` sont renvoyées grâce aux appels à la fonction `next()`, comme pour celles renvoyées par `g2()`. -
function* g1() {
+```js
+function* g1() {
   yield 2;
   yield 3;
   yield 4;
@@ -58,13 +57,14 @@ console.log(iterator.next()); // { value: 3, done: false }
 console.log(iterator.next()); // { value: 4, done: false }
 console.log(iterator.next()); // { value: 5, done: false }
 console.log(iterator.next()); // { value: undefined, done: true }
-
+``` -

Les autres objets itérables

+### Les autres objets itérables -

yield* peut également être utilisé avec d'autres sortes d'itérables (chaînes, tableaux ou arguments) :

+`yield*` peut également être utilisé avec d'autres sortes d'itérables (chaînes, tableaux ou arguments) : -
function* g3() {
+```js
+function* g3() {
   yield* [1, 2];
   yield* "34";
   yield* Array.from(arguments);
@@ -78,13 +78,15 @@ console.log(iterator.next()); // { value: "3", done: false }
 console.log(iterator.next()); // { value: "4", done: false }
 console.log(iterator.next()); // { value: 5, done: false }
 console.log(iterator.next()); // { value: 6, done: false }
-console.log(iterator.next()); // { value: undefined, done: true }
+console.log(iterator.next()); // { value: undefined, done: true } +``` -

La valeur de l'expression yield*

+### La valeur de l'expression `yield*` -

yield* est une expression et non une instruction, elle est donc évaluée et fournit une valeur :

+`yield*` est une expression et non une instruction, elle est donc évaluée et fournit une valeur : -
function* g4() {
+```js
+function* g4() {
   yield* [1, 2, 3];
   return "toto";
 }
@@ -103,57 +105,36 @@ console.log(iterator.next()); // { value: 3, done: false }
 console.log(iterator.next()); // { value: undefined, done: true },
                               // g4() renvoie{ value: "toto", done: true } at this point
 
-console.log(résultat);          // "toto"
- -

Spécifications

- - - - - - - - - - - - - - - - - - - - - -
SpécificationÉtatCommentaires
{{SpecName('ES2015', '#sec-generator-function-definitions-runtime-semantics-evaluation', 'Yield')}}{{Spec2('ES2015')}}Définition initiale
{{SpecName('ESDraft', '#sec-generator-function-definitions-runtime-semantics-evaluation', 'Yield')}}{{Spec2('ESDraft')}} 
- -

Compatibilité des navigateurs

- -

{{Compat("javascript.operators.yield_star")}}

- -

Notes relatives à Firefox

- - - -

Voir aussi

- - +console.log(résultat); // "toto" +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------- | ------------------- | +| {{SpecName('ES2015', '#sec-generator-function-definitions-runtime-semantics-evaluation', 'Yield')}} | {{Spec2('ES2015')}} | Définition initiale | +| {{SpecName('ESDraft', '#sec-generator-function-definitions-runtime-semantics-evaluation', 'Yield')}} | {{Spec2('ESDraft')}} |   | + +## Compatibilité des navigateurs + +{{Compat("javascript.operators.yield_star")}} + +## Notes relatives à Firefox + +- À partir de Gecko 33 {{geckoRelease(33)}}, l'analyse de l'expression `yield` a été mise à jour pour être conforme aux spécifications ES2015 ({{bug(981599)}}) : + + - La restriction concernant les terminateurs de lignes est désormais implémentée. Il n'est pas autorisé d'avoir un terminateur de ligne entre "yield" et "\*". Le code suivant lèvera une exception {{jsxref("SyntaxError")}}: + + ```js + function* toto() { + yield + *[]; + } + ``` + +## Voir aussi + +- [Le protocole itérateur](/fr/docs/Web/JavaScript/Guide/Le_protocole_iterator) +- L'instruction {{jsxref("Instruction/function*", "function*")}} +- L'expression {{jsxref("Opérateurs/function*", "function*")}} +- {{jsxref("Opérateurs/yield", "yield")}} -- cgit v1.2.3-54-g00ecf