在一次关于 Javascript 生成器的讨论中,有人编造了一个有趣的函数:
function *foo() {
var y = 1;
while(true) yield (y = (y * (yield)));
}
现在,可以通过以下方式使用此功能:
var results = [];
var bar = foo();
bar.next();
results.push(bar.next(2));
bar.next();
results.push(bar.next(2));
bar.next();
results.push(bar.next(2));
bar.next();
results.push(bar.next(2));
如我们所见,为了获得下一个产品,我们需要调用next
两次。问题是:这能以某种方式通过单一产量解决吗?