ジェネレータ式

ジェネレータ式はジェネレータ宣言とほぼ同じだが、式の中で定義して変数に格納するなどして利用する。

// ジェネレータ式では定義より前に呼び出しはできない。
// 変数() // ReferenceError

// ジェネレータ式によるジェネレータを変数に代入。
let 変数 = function* ジェネレータ式(引数) {
  // 使い方はジェネレータ宣言と同じ。
}

// ジェネレータ関数名は外部からはアクセスできない。
// ジェネレータ式() // ReferenceError

// ジェネレータ式は匿名関数にできる。
変数 = function*(引数) {
  let i = 0
  while (true) {
    yield ++i
  }
}

// イテレータオブジェクトを生成。
let イテレータ = 変数()
console.log(イテレータ.next().value) // 1
console.log(イテレータ.next().value) // 2