gpt4 book ai didi

javascript - 为什么 CoffeScript 不是 "reusing"循环变量?

转载 作者:行者123 更新时间:2023-11-29 10:50:07 24 4
gpt4 key购买 nike

我是 CoffeeScript 的新手,对此非常兴奋。我做了一些基本循环 here .现在,CoffeeScript 正在为 every 循环定义一个循环变量,如下所示:

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 源代码的情况下,这是我的(有根据的)猜测:

CoffeeScript 解释器只是为您编写的每个 for .. in 创建一个新的 for 循环结构。在构造输出 JS 时,它会维护一个局部变量名称表并根据需要附加到该表。

毕竟,您可以嵌套这些 for .. in 循环,在这种情况下,您将开始需要在 JS 中使用单独的循环变量。

有必要跟踪局部函数作用域中的哪些变量可能被重用。这是可能的,但比它的值(value)更复杂——它根本不提供任何好处,所以 CoffeeScript 不这样做。

关于javascript - 为什么 CoffeScript 不是 "reusing"循环变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11951041/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com