Es6发电机:i + =产量i;

时间:2013-12-18 11:36:58

标签: 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

我不明白为什么这个+= yield i有效。我想这是因为我们等到我们得到下一个值,如果你在next()传递了一些内容,那么这是一个隐含的回报。到现在为止还挺好。但为什么var i的名称?

如果我这样做:

function *addGenerator() {
  var i = 0;
  var j = 0;
  while (true) {
    i += yield j;
  }
}

它不起作用,所以这个变量有些特别......谁知道?

1 个答案:

答案 0 :(得分:2)

在第二个示例中,您将获得0 0 0作为输出,因为gen.next().valuej变量的值 - 而且这是0 - 您不会在其中分配yield循环。

var passedToNext = yield returnThisAsNext_value; 关键字的一般形式可以看作是:

{{1}}