モジュール版が非推奨となった、という流れです。ディレクティブで有効に出来るオプションの機能として追加されました。して、いつでもそこにあります。ときに読んだなら読み飛ばしてもらって結構です。標準的な関数コールについては、よくご存じに違いありません。関数を呼ぶと、ローカル変数を作るプライベートな名前空間ができますね。文まで来ると、ローカル変数が破壊されてから、返り値が呼び出し元に返ります。次に同じ関数をもう一度呼ぶと、新しいプライベート名前空間に新規のローカル変数が作られるのです。関数を出るときにローカル変数を捨てなければどうなるでしょうか。その出ていったところから関数を続行できたとしたら、どうでしょう。ジェネレータは続行できる関数と考えることができます。いった書き方もできます。function.自分でクラスを書いて、ジェネレータで言うところのローカル変数をインスタンス変数として全部保管しておけば、同じ効果を得ることは可能です。インクリメントして返すようにすればできます。ある程度複雑なジェネレータになってくると、同じことをするクラスを書くのは格段にややこしいことになります。面白い例がたくさん含まれています。「に」値を戻せるようにするものです。使うと下記例はもっとスッキリ書けます。解を出す例が入っています。ジェネレータが言語の中枢になっています。あらゆる式と関数がジェネレータのように振舞います。