因此,此代码作为es6中的生成器示例发布在相同位置:
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 :(得分:2)
在第二个示例中,您将获得0 0 0
作为输出,因为gen.next().value
是j
变量的值 - 而且这是0 - 您不会在其中分配yield
循环。
var passedToNext = yield returnThisAsNext_value;
关键字的一般形式可以看作是:
{{1}}