我知道在JavaScript中我可以用这种方式定义一个变量:
menuItems = new Array();
或将 var 放在变量名之前,所以:
var menuItems = new Array();
这两个版本之间存在一些差异吗?有什么变化?
TNX
答案 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是一个很好的链接。