Der*_*ang 7 javascript coffeescript
这篇CoffeeScript:
for i in [1..10]
console.log i
Run Code Online (Sandbox Code Playgroud)
编译为:
for (i = _i = 1; _i <= 10; i = ++_i) {
console.log(i);
}
Run Code Online (Sandbox Code Playgroud)
我不明白为什么它不只是使用i.有任何想法吗?
lon*_*day 11
我对CoffeeScript不是很熟悉,但我的猜测是防止i在循环中修改变量.
例如:
for i in [1..10]
console.log i
i = 7
Run Code Online (Sandbox Code Playgroud)
可能已生成此代码
for (i = 1; i <= 10; ++i) {
console.log(i);
i = 7;
}
Run Code Online (Sandbox Code Playgroud)
这显然会产生无限循环.
但是,CoffeeScript的版本意味着会发生这种情况:
for (i = _i = 1; _i <= 10; i = ++_i) {
console.log(i);
i = 7;
}
Run Code Online (Sandbox Code Playgroud)
由于存在_i跟踪循环中的位置,循环不再是无限的.