我是CoffeeScript的新手,對此非常興奮。我做了一些基本的循環here。現在,CoffeeScript中被定義爲每循環循環變量有如下:爲什麼CoffeScript不能「重複使用」循環變量?
var food, _i, _j, _len, _len1;
for (_i = 0, _len = fruits.length; _i < _len; _i++) {
food = fruits[_i];
console.log(food);
}
for (_j = 0, _len1 = vegetables.length; _j < _len1; _j++) {
food = vegetables[_j];
console.log(food);
}
我用的代碼我的循環是這樣的:
for(var i = 0; i < fruits.length; i++) {
console.log(fruits[i]);
}
for(var i = 0; i < vegetables.length; i++) {
console.log(vegetables[i]);
}
i
是我的循環變量每個循環(排除嵌套循環)。現在我知道你應該在定義它之前總是聲明你的變量。所以我改變了我的編碼習慣:
var i;
for(i = 0; i < fruits.length; i++) {
console.log(fruits[i]);
}
for(i = 0; i < vegetables.length; i++) {
console.log(vegetables[i]);
}
只要我在相同的範圍內,我沒有看到什麼錯,但編譯CoffeeScript的代碼讓我疑惑。
爲什麼CoffeeScript會使用不同的變量每循環?
如果你手動執行它可能會很棘手,但是由於CoffeeScript以編程方式編譯JS,我認爲有一種方法可以跟蹤某個變量是否可以「重複使用」。在源代碼中使用較少的變量聲明是一種好處,是不是? – Amberlamps 2012-08-14 11:35:48
@Amberlamps不,這不足以解決問題。 JavaScript中的變量並不是很貴。實施一種邏輯來跟蹤哪些重用*的成本比較高。僅僅因爲'_i'已經存在而阻止'_j'聲明的增益小於可以忽略的程度。 – Tomalak 2012-08-14 11:37:47
我明白了,但是邏輯只能在開發模式下保持跟蹤。一旦進入生產模式,編譯後的JS就會被客戶使用。 – Amberlamps 2012-08-14 12:41:45