在ES6中,第一次调用迭代器的`next`方法时参数会发生什么?

Eva*_*oll 5 javascript v8 generator ecmascript-harmony

如果你有像这样的发电机,

function* f () {
  // Before stuff.
  let a = yield 1;
  let b = yield 2;
  return [a,b];
}
Run Code Online (Sandbox Code Playgroud)

然后,跑

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 }
Run Code Online (Sandbox Code Playgroud)

第一次调用.next()设置a123和第二次调用设置b456,但是在最后一次调用时.next()返回,

{ value: [ 456, undefined ], done: true }
Run Code Online (Sandbox Code Playgroud)

第一次调用中的参数是否g.next会丢失?他们会怎么样?使用上面的例子,我该如何设置a

LJH*_*arb 5

尝试:

var g = f();
// this question is over this value.
g.next(); // returns: { value: 1, done: false }
g.next(123); // returns: { value: 2, done: false }
g.next(456); // returns: { value: [123, 456], done: true }
Run Code Online (Sandbox Code Playgroud)