环顾四周后,我对此仍然不太清楚。
function() {
var a = 'foo';
a = 'bar';
}
我正在尝试更新变量的值。由于变量已经用“var”声明,我的第二行是否只更新变量,还是将它变为全局变量?
答案 0 :(得分:3)
它只更新变量。
在函数中使用var
,任何地方,会将其声明为局部变量。
答案 1 :(得分:2)
当您为变量javascript赋值时,将检查该变量是否在当前块/范围内定义。
如果是,那么它将更新该变量。如果不是那么它将检查其父块。 并且这一直持续到找到在全局空间中声明的变量。
在你的情况下,它将更新你的函数内的var。
如果在全局空间中找不到变量,它将创建一个新变量,从而污染全局命名空间。
答案 2 :(得分:1)
它会更新变量值,而不是全局变量。要使其全局化,请在函数外声明:
var a = 'foo';
function() {
a = 'bar';
}
答案 3 :(得分:0)
你的第二个变量'bar'必须是a的新值。然后,此范围仅适用于此功能,不能与其他功能或外部呼叫一起使用。