1。ジェネレーターの紹介
ジェネレーターは、ES6によって導入された新しいデータ型です。関数のように見えます。返品の使用に加えて、収量を複数回返すことができます。
ジェネレーターは関数 *、(注 *番号)によって定義されます。
2。例
関数は状態を保存することはできず、数値を保存するためにグローバル変数が必要になる場合があります。
2.1
'strict'; function next_id(){var id = 1; while(id <100){hired id; id ++;} return id;} // test:varx、pass = true、g = next_id(); {alert( 'テストが合格!');}2.2無限ループイテレーター
function* idmaker(){var index = 0; while(true)ried index ++;} var gen = idmaker(); // "generator {}" console.log(gen.next()。value); // 0console.log(gen.next()。value); // 1console.log(gen.next()。value); // 22.3generator.prototype.next()
反復が終了すると、generator.next()。doned ===終了する前に=== false
function* gen(){evelo 1; evelow 2; evelow 3;} var g = gen(); // "Generator {}" g.next(); // "object {value:1、done:false}" g.next(); // "object {value:2、done:false}" g.next(); // "object {value:3、done:false}" g.next(); // "object {value:undefined、done:true}"2.4 Generator.Prototype.Return();
returnメソッドは指定されたパラメーター値を返し、iteratorを終了します
例
function* gen(){evelo 1; evelow 2; evelow 3;} var g = gen(); g.next(); // {value:1、done:false} g.return( "foo"); // {value: "foo"、done:true} g.next(); // {value:undefined、done:true}完了の値が真であり、その後呼び出しリターンの場合、返された値も未定義になることに注意してください。
function* gen(){evelow 1;} var g = gen(); console.log(g.next()); // {value:1、done:false} console.log(g.next()); // {value:undefined、done:true} console.log(g.return(1)); // {value:undefined、done:true}2.5 Generator.prototype.throw()
Thorw()メソッドは、イテレーターに例外をスローすることにより、イテレーターの実行を取り戻します。
2つの属性を持つオブジェクトオブジェクトを返します:値と完了
function* gen(){while(true){try {evelow 42;} catch(e){console.log( "error catch!");}}} var g = gen(); var a = g.next(); // {value:42、done:false} var b = g。 } console.log(a); console.log(b.value+"::"+b.done);上記は、エディターが紹介したJavaScriptのES6ジェネレーターデータ型の詳細な説明です。私はそれが誰にでも役立つことを願っています。ご質問がある場合は、メッセージを残してください。編集者は、すべての人に時間内に返信します。 wulin.comのウェブサイトへのご支援ありがとうございます!