⊗jsSpItOL 65 of 294 menu

Eenmalig werk van iterators in JavaScript

Elke iterator kan slechts één keer deelnemen aan een lus. Dit is een beetje onverwacht, maar logisch - een doorlopen iterator zet zijn done op false, wat betekent dat hij niet meer herhaald kan worden.

Laten we dit verifiëren. Stel we hebben de volgende generator:

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

Laten we een iterator maken:

let iter = func();

Laten we de iterator herhalen met één lus:

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

Laten we de iterator nu herhalen met twee lussen:

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

Om het probleem op te lossen, moet je voor elke nieuwe lus een eigen iterator aanmaken:

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 }

We kunnen het vereenvoudigen:

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

Verbeter de fout die gemaakt is in de volgende code:

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); }
Nederlands
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Wij gebruiken cookies voor de werking van de site, analyse en personalisatie. De verwerking van gegevens gebeurt volgens het Privacybeleid.
alles accepteren aanpassen weigeren