Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/454.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Es6生成器:i+;=产量一;_Javascript_Generator - Fatal编程技术网

Javascript Es6生成器:i+;=产量一;

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 我不明白为什

因此,该代码以前作为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
作为输出,因为
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值;)好的,是的,我现在完全明白了。我应该多喝点咖啡。谢谢:-)