ジェネレータ式はジェネレータ宣言とほぼ同じだが、式の中で定義して変数に格納するなどして利用する。
// ジェネレータ式では定義より前に呼び出しはできない。
// 変数() // ReferenceError
// ジェネレータ式によるジェネレータを変数に代入。
let 変数 = function* ジェネレータ式(引数) {
// 使い方はジェネレータ宣言と同じ。
}
// ジェネレータ関数名は外部からはアクセスできない。
// ジェネレータ式() // ReferenceError
// ジェネレータ式は匿名関数にできる。
変数 = function*(引数) {
let i = 0
while (true) {
yield ++i
}
}
// イテレータオブジェクトを生成。
let イテレータ = 変数()
console.log(イテレータ.next().value) // 1
console.log(イテレータ.next().value) // 2