我是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