1

可能重复:
JavaScript 变量在循环外部或内部声明?

所以..我看过很多文章说我们应该使用以下样式。

var i;
for(i=0;i <= 10; i++) {
  // do something here
}

我一直在使用上述风格,但我只是想知道除了可读性之外它是否真的有帮助。

是不是和下面的一样?

for(var i=0; i<=10; i++) {

}
4

3 回答 3

2

如果出于某种原因(绝不应该如此)您在函数的上下文之外用相同的名称声明了一个全局变量,则会有所不同。

http://jsfiddle.net/bFRKU/

var i = 'global'; 

function test(){
    alert(i);   
    for(var i = 0; i < 10; i++){
     //do something   
    }
}
test(); 

在上面的示例中,您会注意到警报返回“未定义”。这是因为变量定义被提升到函数的顶部(无论它们在函数中的何处声明)。所以实际上,上面的解释为:

http://jsfiddle.net/bFRKU/1/

var i = 'global'; 

function test(){
    var i; 
    alert(i);   
    for(i = 0; i < 10; i++){
     //do something   
    }
}
test(); 

因此警报“未定义”。最终,将变量声明放在函数顶部的唯一原因是为了减少这种潜在的混乱。​​​

于 2012-09-27T23:33:51.417 回答
1

两者之间没有显着差异——纯粹是见仁见智。

于 2012-09-27T23:28:23.057 回答
1
  1. 一样的
  2. 这样做是因为在 JS 中,实践是确保在函数顶部的一个位置声明变量。明确地因为没有块范围,并且因为潜在的范围链解析错误。
    该错误不会来自声明var,而是来自忘记并依赖块范围来支持您(它没有,因为它不存在)。
于 2012-09-27T23:29:16.253 回答