⊗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štinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣTürkmenTürkçeЎзбекOʻzbekTiếng Việt
เราใช้คุกกี้สำหรับการทำงานของเว็บไซต์ การวิเคราะห์ และการปรับเนื้อหาให้เหมาะสมส่วนบุคคล การประมวลผลข้อมูลเกิดขึ้นตาม นโยบายความเป็นส่วนตัว.
ยอมรับทั้งหมด ปรับแต่ง ปฏิเสธ