【发布时间】:2016-08-22 01:29:52
【问题描述】:
这段代码
let func = function *(){
for (let i = 1; i < 5; i++) {
yield i;
}
}
let s = func().next();
console.log(s);
let s2 = func().next();
console.log(s2);
返回
Object {value: 1, done: false}
Object {value: 1, done: false}
所以基本上 func 总是产生第一个值。
但是当我换成
let f = func();
let s = f.next();
console.log(s);
let s2 = f.next();
console.log(s2);
它按预期工作。 为什么将 func 分配给变量会产生如此大的差异?
【问题讨论】:
-
因为
func() !== func()? -
如果它的行为不同,那么每个生成器函数只能使用一次...
标签: javascript ecmascript-6 generator yield