在for循环之外声明变量(var i = 0)是否有帮助?

时间:2012-09-27 23:22:19

标签: javascript for-loop

  

可能重复:
  JavaScript variables declare outside or inside loop?

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

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

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

是否与以下内容相同?

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

}

3 个答案:

答案 0 :(得分:2)

如果由于某种原因(绝不应该是这种情况),您在函数的上下文之外使用相同的名称声明了一个全局变量,这会产生影响。

http://jsfiddle.net/bFRKU/

var i = 'global'; 

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

在上面的示例中,您会注意到警报返回&#34; undefined。&#34;这是因为变量定义被提升到函数的顶部(无论它们在函数中声明的位置)。所以实际上,上述内容被解释为:

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

var i = 'global'; 

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

因此警报&#34;未定义。&#34;最终,将变量声明置于函数顶部的唯一原因是减少这种潜在的混淆。

答案 1 :(得分:1)

两者之间没有显着差异 - 纯粹是一种意见问题。

答案 2 :(得分:1)

  1. 它是一样的
  2. 这样做是因为在JS中,实践是确保在函数顶部的一个位置声明变量。明确是因为没有块范围,并且由于潜在的范围链解析错误 这个错误不是来自声明var,而是忘记了,并依赖于块范围来获得你的支持(它没有,因为它不存在)。