に第一、第二降伏リターンを行い、なぜnext()
へ最初コールはyield
2番目のキーワードの後に来る値を返すのですか?最初next()
ではなぜ以下のコードでは、この発電機
function* generatorFunction() {
yield (yield 'the second yield')();
}
function func(x) {
return 'func passed to the second next()';
}
var iterator = generatorFunction();
var firstValue = iterator.next().value;
var secondValue = iterator.next(func).value;
console.log(firstValue); // "the second yield"
console.log(secondValue); // "func passed to the second next()"
それは右、式として最初yield
後の行の残りの部分を扱い?つまり、(yield x)()
はxと評価されますが、評価中は実際には歩留まりが一時停止しませんか?
next
の2回目の呼び出しでは、関数が渡され、(yield 'the second yield')
の代わりに実行され、その値が返されます。
誰でもここで起こっていることを説明できますか?
これは実際的な目的ではありませんが、私はes6katasを使っています。
@estusと合意するだけです。まず最初に返される場合、最初の 'yield'は何を返しますか? –
私はあまりにも文字通り最初の収穫で停止していたと思います。 (私は実際に何を返すのか疑問に思っていました。)それで、返品のように、yieldの式が評価される順序で返されます。理にかなって、感謝します。 @estusは自由にそれを答えにコピーします。 –
私は '言語感覚'に訴える代わりに演算子の優先順位の説明でそれを補強しました。 – estus