2012-02-16 60 views
8

我对JavaScript和局部变量有一个相当普遍的问题。我的问题是以下之间有什么区别,如果有的话:在JavaScript中使用var重新定义局部变量

function bla 
{ 
    var a = 2; // local variable 
    a = 3;  // the local variable a gets a new value 

    // Would do the following line anything different 
    // (than simply asigning this value?) 
    var a = 4; 
} 

我想我不会得到两个名为a的局部变量。在其他语言中,这甚至是一个错误。那么这有什么用?

回答

13

任何在功能中使用var都会被吊起。后续对同一范围内的相同变量的使用不起作用。

它与单独的a = 4;完全相同。

+3

重新定义变量是否有任何性能成本? 我喜欢在我的if,for,while等声明我的局部变量,以保持代码整洁和可读。这完全是由个人品味(我知道变量的范围在功能范围内),我想确保它不会对性能产生负面影响。 – 2013-05-17 08:58:46

+5

下面是我的问题的答案:http://jsfiddle.net/U5Zdv/ =>它在IE10的性能方面绝对没有差别 – 2013-05-17 10:30:20