⊗jsSpItOL 65 of 294 menu

Μονομερής λειτουργία των επαναληπτών στην JavaScript

Κάθε επαναλήπτης μπορεί να συμμετέχει σε έναν βρόχο μόνο μία φορά. Αυτό είναι λίγο απροσδόκητο, αλλά λογικό - αφού ο επαναλήπτης που έχει διατρέξει ορίζει το done σε false, που σημαίνει ότι δεν μπορεί να ξαναδιατρέξει.

Ας το επιβεβαιώσουμε αυτό. Ας υποθέσουμε ότι έχουμε τον ακόλουθο γεννήτορα:

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

Ας δημιουργήσουμε έναν επαναλήπτη:

let iter = func();

Ας διατρέξουμε τον επαναλήπτη με έναν βρόχο:

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

Τώρα ας διατρέξουμε τον επαναλήπτη με δύο βρόχους:

for (let elem of iter) { console.log(elem); // 1, 2, 3 } for (let elem of iter) { console.log(elem); // δεν λειτουργεί }

Για να λύσουμε το πρόβλημα πρέπει για κάθε νέο βρόχο να δημιουργούμε τον δικό του επαναλήπτη:

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 }

Μπορούμε να απλοποιήσουμε:

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

Διορθώστε το σφάλμα που έγινε στον ακόλουθο κώδικα:

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); }
Ελληνικά
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Χρησιμοποιούμε cookie για τη λειτουργία του ιστότοπου, την ανάλυση και την εξατομίκευση. Η επεξεργασία των δεδομένων γίνεται σύμφωνα με την Πολιτική Απορρήτου.
αποδοχή όλων ρύθμιση απόρριψη