1. Pendahuluan Generator
Generator adalah tipe data baru yang diperkenalkan oleh ES6. Itu terlihat seperti fungsi. Selain menggunakan pengembalian, hasil dapat dikembalikan beberapa kali.
Generator didefinisikan oleh fungsi *, (note * number),
2. Contoh
Fungsi tidak dapat menghemat keadaan, dan kadang -kadang variabel global diperlukan untuk menghemat angka;
2.1
'Gunakan strict'; function next_id () {var id = 1; while (id <100) {yield id; id ++;} return id;} // test: varx, pass = true, g = next_id (); for (x = 1; x <100; x ++) {if (g.next (). nilai! == x) {{1); {alert ('test lulus!');}2.2 Iterator loop tak terbatas
fungsi* idmaker () {var index = 0; while (true) yield index ++;} var gen = idmaker (); // "generator {}" console.log (gen.next (). Value); // 0console.log (gen.next (). Value); // 1console.log (gen.next (). Value); // 22.3Generator.prototype.next ()
Saat iterasi berakhir, generator.next (). Done === true, sebelum berakhir === false
fungsi* gen () {hasil 1; hasil 2; hasil 3;} var g = gen (); // "generator {}" g.next (); // "objek {value: 1, selesai: false}" g.next (); // "objek {value: 2, selesai: false}" g.next (); // "objek {value: 3, selesai: false}" g.next (); // "Object {value: Undefined, Done: True}"2.4 Generator.Prototype.Return ();
Metode pengembalian mengembalikan nilai parameter yang diberikan dan mengakhiri iterator
contoh
fungsi* gen () {hasil 1; hasil 2; hasil 3;} var g = gen (); g.next (); // {value: 1, selesai: false} g.return ("foo"); // {value: "foo", done: true} g.next (); // {value: Undefined, Done: True}Perhatikan bahwa jika nilai yang dilakukan adalah benar, dan kemudian panggilan kembali, nilai yang dikembalikan juga akan tidak ditentukan.
fungsi* gen () {hasil 1;} var g = gen (); console.log (g.next ()); // {value: 1, selesai: false} console.log (g.next ()); // {value: undefined, done: true} console.log (g.return (1)); // {value: Undefined, Done: True}2.5 Generator.prototype.throw ()
Metode thorw () mendapatkan kembali eksekusi iterator dengan melemparkan pengecualian ke iterator;
Mengembalikan objek objek dengan dua atribut: nilai dan selesai
Fungsi* gen () {while (true) {coba {hasil 42;} catch (e) {console.log ("kesalahan tangkapan!");}}} var g = gen (); var a = g.next (); // {value: 42, done: false} var b = g.throw ("kesalahan baru (" sesuatu yang salah); } console.log (a); console.log (b.value+"::"+b.done);Di atas adalah penjelasan terperinci tentang tipe data generator ES6 dalam JavaScript yang diperkenalkan oleh editor. Saya harap ini akan membantu semua orang. Jika Anda memiliki pertanyaan, silakan tinggalkan saya pesan dan editor akan membalas semua orang tepat waktu. Terima kasih banyak atas dukungan Anda ke situs web Wulin.com!