"yield*"記法はforeachでぶん回せるような変数をバラして次の関数に渡す事ができます。
実際のところ
具体例として、フィボナッチ数列をジェネレータ関数で実装するケースを考えてみます。
記述する際の利用法は以下の(1)(2)の通り。
'use strict'; function* fibonacci() { let o = [0, 1, 1]; // (1) yield* o; // (2) while (true) { o[0] = o[1]; o[1] = o[2]; o[2] = o[0] + o[1]; yield o[2]; } } for (var n of fibonacci()) { console.log(n); if (n >= 1000) break; } /* 0 1 1 2 3 5 ... 987 1597 */
ここで、この記法を知らないと(2)の部分が以下の様な感じの実装になってしまいますね。
for (let val of o) { yield val; } // (2)'