可能重复:
Difference between using var and not using var in JavaScript
var foo = 1;
foo = 1;
上述两行之间有什么区别?
答案 0 :(得分:18)
基本上,var
声明变量,您也可以同时分配它。
没有var
,它会分配给变量。分配将分配给现有变量或创建该名称的全局变量,然后分配给它。
在函数之外,这意味着如果变量尚不存在,那么(原则上)没有真正的区别。在这种情况下,两者都创建全局变量foo
。
在函数中,存在巨大差异。第一个创建函数的局部变量,无论它是否存在于其他地方。
第二个将创建一个全局变量(如果它不存在),或者只是更改该值(如果它存在)。
为了使代码尽可能保持模块化,除非您特别想要更改现有的全局变量,否则总是使用var
。这意味着使用var
声明函数外的所有全局变量并使用var
声明所有本地变量。
答案 1 :(得分:5)
foo = 1
会将foo
放在定义foo
的最后一个范围或全局范围内。 var foo = 1
将变量放在当前范围内(即当前函数)。
答案 2 :(得分:1)
在第一种情况下,foo将在定义它的同一范围内可用,即它将是局部变量。 在第二种情况下,foo是一个全局变量,位于全局范围内。