在JavaScript生成器函数中,第二收益率不工作。

问题描述 投票:0回答:1

我正在学习javascript,如果发现新的概念在函数作为生成器的函数作为新的功能在ES6中

var num=5;
function * x()
{ 
   yield num++;
   yield num*=num; 
};

x().next()。

{value: 5, done: false}

x().next()。

它应该返回{value: 36, done: false}但返回

{value: 6, done: false} // It Should Return {value: 36, done: false}
javascript ecmascript-6 generator
1个回答
1
投票

每次调用 x() 创建一个 新的 生成器,将从头开始,所以对于

var num=5;
function * x()
{ 
   yield num++;
   yield num*=num; 
};

console.log(x().next());
console.log(x().next());

基本上等同于做

var num = 5;
console.log(num++);
console.log(num++);

为了得到36,你需要创建一个单一的生成器,然后调用 next() 上,例如

var gen = x();
console.log(gen.next());
console.log(gen.next());
© www.soinside.com 2019 - 2024. All rights reserved.