在Javascript中重新定义变量

时间:2014-02-13 07:33:28

标签: javascript

环顾四周后,我对此仍然不太清楚。

function() {
    var a = 'foo';
    a = 'bar';
}

我正在尝试更新变量的值。由于变量已经用“var”声明,我的第二行是否只更新变量,还是将它变为全局变量?

4 个答案:

答案 0 :(得分:3)

它只更新变量。

在函数中使用var任何地方,会将其声明为局部变量。

答案 1 :(得分:2)

当您为变量javascript赋值时,将检查该变量是否在当前块/范围内定义。

如果是,那么它将更新该变量。如果不是那么它将检查其父块。  并且这一直持续到找到在全局空间中声明的变量。

在你的情况下,它将更新你的函数内的var。

如果在全局空间中找不到变量,它将创建一个新变量,从而污染全局命名空间。

答案 2 :(得分:1)

它会更新变量值,而不是全局变量。要使其全局化,请在函数外声明:

var a = 'foo';
function() {   
    a = 'bar';
}

答案 3 :(得分:0)

你的第二个变量'bar'必须是a的新值。然后,此范围仅适用于此功能,不能与其他功能或外部呼叫一起使用。