我想了解這是如何工作。我已經操縱了這些代碼,但仍不明白它是如何返回值的。我在http://davidwalsh.name/es6-generatorsES6發電機讓我困惑
function *foo(x) {
var y = 2 * (yield (x + 1));
var z = yield (y/3);
return (x + y + z);
}
var it = foo(5);
// note: not sending anything into `next()` here
console.log(it.next()); // { value:6, done:false }
console.log(it.next(12)); // { value:8, done:false }
console.log(it.next(13)); // { value:42, done:true }
得到這個從教程中,我似乎對第一next()的把握有點的,但未來2擋板我的8值和42
希望有人可以幫助解釋這一點,所以我可以嘗試掌握並使用發電機進入下一個階段。
好像你至少第二個人通過這個特殊的教程中百思不得其解。也許是時候去找一個不同的了。 – 2014-11-21 07:03:58
是的,這是重複的,但我仍然認爲其他問題完全沒有答案。兩個答案都說第一個值是6,但是yield本身的實際初始值是5.我認爲必須理解執行上下文在yield暫停之前和當它彈出執行上下文並返回時的區別評估。這是不正確的? – pertrai1 2014-11-22 08:04:04
我不明白你的評論的任何部分。 「收益本身的實際初始值是5」是什麼意思? – 2014-11-22 08:21:41