0
所以這段代碼被公佈在同一個地方之前,作爲一個ES6發生器的例子:Es6發電機:i + =收益i;
function *addGenerator() {
var i = 0;
while (true) {
i += yield i;
}
}
var gen = addGenerator();
console.log(gen.next().value);
console.log(gen.next(3).value);
console.log(gen.next(5).value);
其中給出:0, 3, 8
。
我不明白爲什麼這個+= yield i
的作品。我想這是因爲我們等待,直到我們獲得下一個值,並且如果你通過了next()
這是一個隱含的回報。到現在爲止還挺好。但爲什麼是var i
的名字?
如果我做的:
function *addGenerator() {
var i = 0;
var j = 0;
while (true) {
i += yield j;
}
}
它不工作,所以有一些特殊之處,無功...誰知道呢?
在第二個例子中,你會得到'0 0 0'作爲輸出,因爲'gen.next()value'是。 j變量的值 - 這是'0' - 你不會在循環中分配它。 – kamituel
啊數字,但如何將next()的值傳入生成器工作? –
它從'yield'返回。 – kamituel