环顾四周后,我仍然不太清楚这一点。在Javascript中重新定义变量
function() {
var a = 'foo';
a = 'bar';
}
我试图在这里更新变量的值。由于该变量已经用“var”声明,我的第二行只更新变量,还是它也使它全局?
环顾四周后,我仍然不太清楚这一点。在Javascript中重新定义变量
function() {
var a = 'foo';
a = 'bar';
}
我试图在这里更新变量的值。由于该变量已经用“var”声明,我的第二行只更新变量,还是它也使它全局?
当你assing值的变量,如果该变量是在当前块/范围内定义的JavaScript将检查。
如果是,那么它将更新该变量。如果没有,那么它会检查它的父块。 并且这种情况持续下去,直到它找到在全局空间中声明的变量。
在你的情况下,它会更新函数中的var a。
如果在全局空间中找不到变量,它将创建一个新变量,从而污染全局名称空间。
谢谢 - 这给了我答案,但也给了我一个想法,为什么它这样工作:) –
它只更新变量。
一次使用var
,任何地方在函数中,都会声明它是一个局部变量。
它将更新变量值,而不是全局变量。为了使全球性的,声明它之外的功能:
var a = 'foo';
function() {
a = 'bar';
}
你的第二个变量'bar'必须是a的新值。然后,这个范围仅适用于该功能,不能与其他功能或外部呼叫一起使用。
不,它只会更新变量值。 – KunJ