0

我的测试表明标题确实是正确的。但我不知道是否有一些我没有想到的细微差别。另请参阅:在 for 循环或 if 块中声明变量有什么问题吗?

4

1 回答 1

2

如果它们在同一范围内,则您的测试是正确的。在同一个范围内重新声明同一个变量没有任何作用。

但是,如果它们不在同一范围内,则在本地范围内重新声明变量将创建一个新变量,该变量将覆盖该范围内的原始变量。

所以,这很好用:

var value = "foo";
var value;
console.log(value);   // "foo"

但是,这会在本地范围内创建一个新变量,该变量不具有全局定义的值:

var value = "foo";

function test() {
    var value;            // this creates a new variable that is separate
                          // from the globally declared one with the same name
    console.log(value);   // undefined
}

test();
于 2012-11-10T01:54:41.103 回答