什么时候让我在JavaScript中的变量名之前使用var?

时间:2015-08-02 14:40:01

标签: javascript jquery

我知道在JavaScript中我可以用这种方式定义一个变量:

menuItems = new Array();

或将 var 放在变量名之前,所以:

var menuItems = new Array();

这两个版本之间存在一些差异吗?有什么变化?

TNX

1 个答案:

答案 0 :(得分:3)

当你不使用var时,它进入全局范围(在浏览器中进入窗口对象,在节点中进入全局对象)。所以你的第一个相当于浏览器中的window.menuItems = ...

这通常不太好,因为您正在污染窗口对象,可能会覆盖或让menuItems被其他代码覆盖。

在第二种情况下,它进入一个变量,该变量存在于函数范围内,该函数包含该位代码和其中的任何其他函数。所以

...

function() {
    ... bits of code except creation of a function ...
    var menuItems = new Array();
    ... bits of code ...
}

// menuItems is undefined here so whatever you do on something called menuItems here actually acts on a different variable menuItems
如果您想深入了解详情,

http://speakingjs.com/es5/ch16.html是一个很好的链接。