7
這片CoffeeScript中的:爲什麼CoffeeScript以這種方式編譯for循環?
for i in [1..10]
console.log i
被編譯爲:
for (i = _i = 1; _i <= 10; i = ++_i) {
console.log(i);
}
我不明白爲什麼它不只是使用i
。有任何想法嗎?
這片CoffeeScript中的:爲什麼CoffeeScript以這種方式編譯for循環?
for i in [1..10]
console.log i
被編譯爲:
for (i = _i = 1; _i <= 10; i = ++_i) {
console.log(i);
}
我不明白爲什麼它不只是使用i
。有任何想法嗎?
我對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
存在跟蹤環路位置的不再是無限的。