⊗jsSpItOL 65 of 294 menu

Funcționarea unică a iteratorilor în JavaScript

Fiecare iterator poate participa într-un ciclu doar o singură dată. Acest lucru este puțin neașteptat, dar logic - la urma urmei, iteratorul parcurs își setează done în false, ceea ce înseamnă că nu mai poate fi iterat.

Să ne convingem de acest lucru. Să presupunem că avem următorul generator:

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

Să creăm un iterator:

let iter = func();

Să iterăm iteratorul cu un ciclu:

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

Acum să iterăm iteratorul cu două cicluri:

for (let elem of iter) { console.log(elem); // 1, 2, 3 } for (let elem of iter) { console.log(elem); // nu funcționează }

Pentru a rezolva problema, pentru fiecare ciclu nou trebuie să creăm propriul iterator:

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 }

Putem simplifica:

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

Corectați eroarea comisă în următorul cod:

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); }
Română
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Folosim cookie pentru funcționarea site-ului, analiză și personalizare. Prelucrarea datelor are loc în conformitate cu Politica de confidențialitate.
acceptă toate configurează respinge