在for循环或if块中声明你的变量有什么问题吗?

时间:2012-11-10 01:34:17

标签: javascript variables

我经常看到这个习惯:

var foo, bar;
for(var i = 0; i < 5; i++) {
    foo = '' + foo + i;
}

它也被我擦掉了,但我刚刚意识到我不知道为什么要这样做。

1 个答案:

答案 0 :(得分:3)

这样做没有真正的问题,但是javascript没有块级范围,所以如果你在循环中声明foo,它仍然可以在整个函数中访问。

如果您事先声明所有变量,那么在进行缩小时有一个小优势,请考虑:

// Up front
var a, b, c, aVal, bVal, cVal;

for (a = 0; a < 5; ++a) {
    aVal = a;
}

for (b = 0; b < 5; ++b) {
    bVal = b;
}

for (c = 0; c < 5; ++c) {
    cVal = c;
}

// Inline
for (var a = 0; a < 5; ++a) {
    var aVal = a;
}

for (var b = 0; b < 5; ++b) {
    var bVal = b;
}

for (var c = 0; c < 5; ++c) {
    var cVal = c;
}

在这种情况下,缩小时,源中会出现更多“var”语句。这不是什么大不了的事,但随着时间的推移它们肯定会增加。