ecmascript:generator
文書の過去の版を表示しています。
Generator
Generator(ジェネレータ)関数は反復処置プロトコルを実装した特別なGeneratorオブジェクトを返す特別な関数。
ジェネレータは、特別なキーワードyieldで指定した値がイテレータプロトコルにおける `value`の値となる。
ジェネレータの動作
function* generator() { yield 1; yield 2; yield 3; } for (const i of generator()) { console.log(i) // => 1, 2, 3 }
ジェネレータの例
フィボナッチ数列を生成するジェネレータ
function* fibonacci(count = Infinity) { let a = 1, b = 1 for (let i = 0; i < count; i++) { yield a; [a, b] = [b, a + b] } } for (let i of fibonacci(10)) { console.log(i); // => 1, 1, 2, 3, 5, 8, 13, 21, 34, 55 }
Rangeを生成するジェネレータ
function* range(a, b) { for(var i = a; i <= b; i++) { yield i; } } for (let i of range(3,7)) { console.log(i); // => 3, 4, 5, 6, 7 }
ecmascript/generator.1757345641.txt.gz · 最終更新: by nullpon