diff options
| author | julieng <julien.gattelier@gmail.com> | 2021-08-03 08:03:23 +0200 |
|---|---|---|
| committer | SphinxKnight <SphinxKnight@users.noreply.github.com> | 2021-09-03 08:08:25 +0200 |
| commit | bf8e099b9c8b3c60d60b3712b4fc97b052c39887 (patch) | |
| tree | c101746d082c9581c94f5937519c7d0e2f4af8cb /files/fr/web/javascript/reference/operators/yield_star_ | |
| parent | 844f5103992238c0c23203286dad16a466e89c97 (diff) | |
| download | translated-content-bf8e099b9c8b3c60d60b3712b4fc97b052c39887.tar.gz translated-content-bf8e099b9c8b3c60d60b3712b4fc97b052c39887.tar.bz2 translated-content-bf8e099b9c8b3c60d60b3712b4fc97b052c39887.zip | |
convert content to md
Diffstat (limited to 'files/fr/web/javascript/reference/operators/yield_star_')
| -rw-r--r-- | files/fr/web/javascript/reference/operators/yield_star_/index.md | 137 |
1 files changed, 59 insertions, 78 deletions
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* --- -<div>{{jsSidebar("Operators")}}</div> +{{jsSidebar("Operators")}} -<p>Une <strong>expression <code>yield*</code></strong> 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.</p> +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. -<div>{{EmbedInteractiveExample("pages/js/expressions-yieldasterisk.html")}}</div> +{{EmbedInteractiveExample("pages/js/expressions-yieldasterisk.html")}} -<h2 id="Syntaxe">Syntaxe</h2> +## Syntaxe -<pre class="syntaxbox"> yield* [[expression]];</pre> + yield* [[expression]]; -<dl> - <dt><code>expression</code></dt> - <dd>L'expression qui renvoie un objet itérable.</dd> -</dl> +- `expression` + - : L'expression qui renvoie un objet itérable. -<h2 id="Description">Description</h2> +## Description -<p>L'expression <code>yield*</code> itère sur l'opérande et génère chaque valeur générée par l'opérande.</p> +L'expression `yield*` itère sur l'opérande et génère chaque valeur générée par l'opérande. -<p>La valeur de l'expression <code>yield*</code> est la valeur renvoyée par l'itérateur lorsque celui est terminé (la propriété <code>done</code> vaut <code>true</code>).</p> +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`). -<h2 id="Exemples">Exemples</h2> +## Exemples -<h3 id="Délégation_de_la_génération">Délégation de la génération</h3> +### Délégation de la génération -<p>Dans le code suivant, les valeurs générées par <code>g1()</code> sont renvoyées grâce aux appels à la fonction <code>next()</code>, comme pour celles renvoyées par <code>g2()</code>.</p> +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()`. -<pre class="brush: js">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 } -</pre> +``` -<h3 id="Les_autres_objets_itérables">Les autres objets itérables</h3> +### Les autres objets itérables -<p><code>yield*</code> peut également être utilisé avec d'autres sortes d'itérables (chaînes, tableaux ou arguments) :</p> +`yield*` peut également être utilisé avec d'autres sortes d'itérables (chaînes, tableaux ou arguments) : -<pre class="brush: js">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 }</pre> +console.log(iterator.next()); // { value: undefined, done: true } +``` -<h3 id="La_valeur_de_l'expression_yield*">La valeur de l'expression <code>yield*</code></h3> +### La valeur de l'expression `yield*` -<p><code>yield*</code> est une expression et non une instruction, elle est donc évaluée et fournit une valeur :</p> +`yield*` est une expression et non une instruction, elle est donc évaluée et fournit une valeur : -<pre class="brush: js">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"</pre> - -<h2 id="Spécifications">Spécifications</h2> - -<table class="standard-table"> - <thead> - <tr> - <th scope="col">Spécification</th> - <th scope="col">État</th> - <th scope="col">Commentaires</th> - </tr> - </thead> - <tbody> - <tr> - <td>{{SpecName('ES2015', '#sec-generator-function-definitions-runtime-semantics-evaluation', 'Yield')}}</td> - <td>{{Spec2('ES2015')}}</td> - <td>Définition initiale</td> - </tr> - <tr> - <td>{{SpecName('ESDraft', '#sec-generator-function-definitions-runtime-semantics-evaluation', 'Yield')}}</td> - <td>{{Spec2('ESDraft')}}</td> - <td> </td> - </tr> - </tbody> -</table> - -<h2 id="Compatibilité_des_navigateurs">Compatibilité des navigateurs</h2> - -<p>{{Compat("javascript.operators.yield_star")}}</p> - -<h2 id="Notes_relatives_à_Firefox">Notes relatives à Firefox</h2> - -<ul> - <li>À partir de Gecko 33 {{geckoRelease(33)}}, l'analyse de l'expression <code>yield</code> a été mise à jour pour être conforme aux spécifications ES2015 ({{bug(981599)}}) : - - <ul> - <li>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")}}: - <pre class="brush: js">function* toto() { - yield - *[]; -}</pre> - </li> - </ul> - </li> -</ul> - -<h2 id="Voir_aussi">Voir aussi</h2> - -<ul> - <li><a href="/fr/docs/Web/JavaScript/Guide/Le_protocole_iterator">Le protocole itérateur</a></li> - <li>L'instruction {{jsxref("Instruction/function*", "function*")}}</li> - <li>L'expression {{jsxref("Opérateurs/function*", "function*")}}</li> - <li>{{jsxref("Opérateurs/yield", "yield")}}</li> -</ul> +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")}} |
