1. ภาพรวม
Generator เป็นประเภทข้อมูลใหม่ที่แนะนำโดย ES6 ดูเหมือนฟังก์ชั่น นอกเหนือจากการใช้ผลตอบแทนแล้วผลผลิตสามารถส่งคืนได้หลายครั้ง
เครื่องกำเนิดถูกกำหนดโดยฟังก์ชั่น *, (หมายเหตุ * หมายเลข),
2. ตัวอย่าง
ฟังก์ชั่นไม่สามารถบันทึกสถานะได้และบางครั้งตัวแปรทั่วโลกจำเป็นต้องมีการบันทึกตัวเลข
2.1
'ใช้อย่างเข้มงวด'; ฟังก์ชั่น next_id () {var id = 1; ในขณะที่ (id <100) {ID ID; id ++; } return id;} // test: var x, pass = true, g = next_id (); สำหรับ (x = 1; x <100; x ++) {ถ้า (g.next (). ค่า! == x) {pass = false; การแจ้งเตือน ('การทดสอบล้มเหลว!'); หยุดพัก; }} if (pass) {Alert ('ทดสอบผ่าน!');}2.2 ตัววนซ้ำที่ไม่มีที่สิ้นสุด
ฟังก์ชั่น* idmaker () {var index = 0; ในขณะที่ (จริง) ดัชนีผลผลิต ++;} var gen = idmaker (); // "Generator {}" console.log (gen.next (). ค่า); // 0console.log (gen.next (). ค่า); // 1console.log (gen.next (). ค่า); // 22.3Generator.prototype.next ()
เมื่อการวนซ้ำสิ้นสุดลง generator.next (). ทำ === true ก่อนที่จะสิ้นสุด === FALSE
ฟังก์ชั่น* gen () {ผลผลิต 1; ผลผลิต 2; ผลผลิต 3;} var g = gen (); // "Generator {}" G.Next (); // "วัตถุ {value: 1, ทำ: false}" g.next (); // "วัตถุ {ค่า: 2, ทำ: false}" g.next (); // "วัตถุ {ค่า: 3, ทำ: false}" g.next (); // "วัตถุ {ค่า: ไม่ได้กำหนดเสร็จแล้ว: จริง}"2.4 Generator.prototype.return ();
วิธีการส่งคืนส่งคืนค่าพารามิเตอร์ที่กำหนดและสิ้นสุดตัววนซ้ำ
ตัวอย่าง
ฟังก์ชั่น* gen () {ผลผลิต 1; ผลผลิต 2; ผลผลิต 3;} var g = gen (); g.next (); // {value: 1, ทำ: false} g.return ("foo"); // {value: "foo", ทำ: true} g.next (); // {ค่า: ไม่ได้กำหนดเสร็จแล้ว: จริง}โปรดทราบว่าหากค่าของ DONE เป็นจริงและจากนั้นโทรกลับค่าที่ส่งคืนจะไม่ได้กำหนด
ฟังก์ชั่น* gen () {ผลผลิต 1;} var g = gen (); console.log (g.next ()); // {ค่า: 1, เสร็จสิ้น: false} console.log (g.next ()); // {ค่า: undefined, ทำ: จริง} console.log (g.return (1)); // {ค่า: ไม่ได้กำหนดเสร็จแล้ว: จริง}2.5 Generator.prototype.throw ()
วิธี thorw () ฟื้นการดำเนินการของตัววนซ้ำโดยการโยนข้อยกเว้นลงในตัววนซ้ำ
ส่งคืนวัตถุวัตถุที่มีสองแอตทริบิวต์: ค่าและเสร็จสิ้น
ฟังก์ชั่น* gen () {ในขณะที่ (จริง) {ลอง {ให้ผลผลิต 42; } catch (e) {console.log ("ข้อผิดพลาดจับ!"); }}} var g = gen (); var a = g.next (); // {value: 42, ทำ: เท็จ} var b = g.throw (ข้อผิดพลาดใหม่ ("มีบางอย่างผิดปกติ")); // "ข้อผิดพลาด!บทความข้างต้นความเข้าใจในเชิงลึกของประเภทข้อมูล JS Generator เป็นเนื้อหาทั้งหมดที่ฉันได้แบ่งปันกับคุณ ฉันหวังว่าคุณจะให้ข้อมูลอ้างอิงและฉันหวังว่าคุณจะสนับสนุน wulin.com มากขึ้น