可能重复:
Difference between using var and not using var in JavaScript
我知道我应该总是使用'var'来定义函数中的局部变量。
当我定义一个全局函数时,使用'var'之间的区别是什么?
我在互联网上看到的一些代码示例使用
var globalVar = something;
globalVar = something;
有什么区别?
答案 0 :(得分:21)
嗯,区别在于技术上,一个简单的作业globalVar = 'something';
没有声明一个变量,该作业只会创建一个全局对象上的属性,以及全局对象是作用域链中最后一个对象的事实,使其可以解析。
另一个区别是绑定的方式,变量被绑定为其环境记录的“不可删除”属性,例如:
var global1 = 'foo';
delete this.global1; // false
global2 = 'bar';
delete this.global2; // true
我强烈建议您始终使用var
语句,例如,您的代码将在ECMAScript 5严格模式下中断,不允许对未声明的标识符进行分配以避免隐式全局。< / p>
答案 1 :(得分:6)
简短:全球背景没有区别**。
Long:全局上下文的变量对象是全局上下文本身。这就是我们可以在函数 - 或 eval上下文中访问全局variables
和methods
的原因。但是,var
语句只是确保您在当前上下文中定义变量,因此在全局上下文中省略该变量没有任何区别。 异常:ES5严格模式在看到没有var
的声明时可能会抛出错误。
**
唯一的区别是,var
将在当前(执行)上下文中声明一个没有定义的变量。这发生在js解析时,因此引擎知道在上下文中有一个具有该名称的变量。省略var
将最终从global object
直接访问属性。
答案 2 :(得分:2)
在浏览器中的任何功能之外,在范围方面使用var
与否之间没有区别。在您的两个示例中,globalVar
都是window
的成员。
通常,最好不要使用这些变量,这样全局命名空间就不会变得杂乱无章。