Javascript Es6生成器:i+;=产量一;
因此,该代码以前作为es6中发电机的示例发布在相同的地方:Javascript Es6生成器:i+;=产量一;,javascript,generator,Javascript,Generator,因此,该代码以前作为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 我不明白为什
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()
中传递某个值,这是一个隐式返回。到现在为止,一直都还不错。但是为什么vari
的名称是
如果我这样做:
function *addGenerator() {
var i = 0;
var j = 0;
while (true) {
i += yield j;
}
}
它不起作用,所以这个变量有点特别。。。谁知道呢?在第二个示例中,您将得到
0
作为输出,因为gen.next().value
是j
变量的值-这是0-您不会在循环中分配给它
yield
关键字的一般形式如下:
var passedToNext = yield returnThisAsNext_value;
在第二个示例中,您将得到
0 0
作为输出,因为gen.next().value
是j
变量的值-这是0
-您不在循环中分配给它。啊,这是数字,但是传递next()的值如何进入发电机工作?它是从yield
返回的。因此它看起来或多或少是这样的:var passedToNext=yield returnThisAsNext\u值代码>;)好的,是的,我现在完全明白了。我应该多喝点咖啡。谢谢:-)