⊗jsSpItOL 65 of 294 menu

Fonctionnement unique des itérateurs en JavaScript

Chaque itérateur ne peut participer à une boucle qu'une seule fois. C'est un peu inattendu, mais logique - après tout, un itérateur parcouru établit sa propriété done à false, ce qui signifie qu'il ne peut plus être parcouru.

Vérifions cela. Supposons que nous ayons le générateur suivant :

function *func() { yield 1; yield 2; yield 3; }

Créons un itérateur :

let iter = func();

Parcourons l'itérateur avec une boucle :

for (let elem of iter) { console.log(elem); // 1, 2, 3 }

Maintenant, essayons de parcourir le même itérateur avec deux boucles :

for (let elem of iter) { console.log(elem); // 1, 2, 3 } for (let elem of iter) { console.log(elem); // ne fonctionne pas }

Pour résoudre le problème, il faut créer un nouvel itérateur pour chaque nouvelle boucle :

let iter1 = func(); for (let elem of iter1) { console.log(elem); // 1, 2, 3 } let iter2 = func(); for (let elem of iter2) { console.log(elem); // 1, 2, 3 }

Nous pouvons simplifier :

for (let elem of func()) { console.log(elem); // 1, 2, 3 } for (let elem of func()) { console.log(elem); // 1, 2, 3 }

Corrigez l'erreur commise dans le code suivant :

function *func() { for (let i = 1; i <= 3; i++) { yield i; } } let elems = func(); for (let elem of elems) { console.log(elem); } for (let elem of elems) { console.log(elem); }
Français
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Nous utilisons des cookies pour le fonctionnement du site, l'analyse et la personnalisation. Le traitement des données est effectué conformément à la Politique de confidentialité.
accepter tout personnaliser refuser