这篇CoffeeScript:
for i in [1..10]
console.log i
编译为:
for (i = _i = 1; _i <= 10; i = ++_i) {
console.log(i);
}
我不明白为什么它不只是使用i
。有什么想法吗?
答案 0 :(得分:11)
我对CoffeeScript不是很熟悉,但我的猜测是阻止修改循环中的i
变量。
例如:
for i in [1..10]
console.log i
i = 7
可能已生成此代码
for (i = 1; i <= 10; ++i) {
console.log(i);
i = 7;
}
这显然会产生无限循环。
然而,CoffeeScript的版本意味着会发生这种情况:for (i = _i = 1; _i <= 10; i = ++_i) {
console.log(i);
i = 7;
}
循环不再是无限的,因为存在_i
来跟踪循环中的位置。