繁体   English   中英

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

[英]Es6 generators: i += yield i;

因此,此代码之前作为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 0 0作为输出,因为gen.next().valuej变量的值 - 这是0 - 你不在循环中分配它。

yield关键字的一般形式可以看作是:

var passedToNext = yield returnThisAsNext_value;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM