【发布时间】:2017-09-15 13:16:39
【问题描述】:
我在下面写了一个演示来演示这个问题。
我希望生成器会为变量a 进行迭代,但是,冗余代码会影响它。
谁能一步一步弄清楚为什么会发生这种情况?
我的代码是:
function* foo(){
var a = 0, c
while(a < 10){
a += 1
yield a //if the semicolon is added here, the final result is 1
[c] = [101]
}
}
var gen= foo()
console.log(gen.next().value) // [101]
【问题讨论】:
-
添加分号将终止该语句。如果没有分号,Javascript 会执行下面的行,因此它会产生 a[c] = [101]
-
这就是为什么你应该养成在 JS 中每个语句都用分号结束的习惯。
-
...这是编写自己的分号的原因之一,而不是依靠内置的纠错机制(自动插入分号)为您完成。
标签: javascript ecmascript-6 generator