1。概要
ジェネレーターは、ES6によって導入された新しいデータ型です。関数のように見えます。返品の使用に加えて、収量を複数回返すことができます。
ジェネレーターは関数 *、(注 *番号)によって定義されます。
2。例
関数は状態を保存することはできず、数値を保存するためにグローバル変数が必要になる場合があります。
2.1
'strict'; function next_id(){var id = 1; while(id <100){evely id; ID ++; } return id;} // test:var x、pass = true、g = next_id();アラート( 'テストが失敗!');壊す; }} if(pass){alert( 'test passed!');}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(){evelow 1;収量2; every 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(){evelow 1;収量2; every 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( "エラーキャッチ!"); }}} var g = gen(); var a = g.next(); // {value:42、done:false} var b = g.throw(newエラー( "何かが間違っている"); // "エラーキャッチ!" // {値:42、done:false} console.log(a); console.log(b。bolue+"+b。done;上記の記事JSジェネレーターデータ型の詳細な理解は、私があなたと共有したすべてのコンテンツです。参照を提供できることを願っています。wulin.comをもっとサポートできることを願っています。