【发布时间】:2014-02-11 19:40:09
【问题描述】:
如果你有类似的生成器,
function* f () {
// Before stuff.
let a = yield 1;
let b = yield 2;
return [a,b];
}
然后,运行
var g = f();
// this question is over this value.
g.next(123); // returns: { value: 1, done: false }
g.next(456); // returns: { value: 2, done: false }
g.next(); // returns: { value: [ 456, undefined ], done: true }
第一次调用.next() 将a 设置为123,第二次调用将b 设置为456,但是在最后一次调用.next() 时返回,
{ value: [ 456, undefined ], done: true }
第一次调用g.next 时的参数会丢失吗?他们会发生什么?使用上面的例子,如何设置a?
【问题讨论】:
-
简单来说;当我们将参数传递给 next() 时,它会将先前的 yield 表达式返回值替换为我们提供的值。因为这是您第一次执行函数值 123 被简单地丢弃。
标签: javascript generator v8 ecmascript-harmony