我目前正在尝试学习JavaScript的基础知识。
到目前为止我所理解的(如果我在某处出错,请纠正我):语言仅区分全局和功能范围。
在函数中,在声明函数范围的变量时必须使用var-keyword。否则,您将自动声明一个全局变量。
但是当我还在全球空间时:
是否有必要在那里使用var-keyword?
我的意思是:无论如何我都声明了一个全局变量。
那么在那里使用var也有意义吗?如果是这样的话:哪种感觉?
答案 0 :(得分:3)
一个小实验:
window.a = 1; // define global variable 'a'
console.log(a); // 1
delete a; // true
console.log(a); // ReferenceError: a is not defined
一切都好。但是,让我们使用var
关键字定义一个全局变量:
var a = 1; // define a global variable 'a'
console.log(a); // 1
delete a; // false
console.log(a); // 1, 'a' still exists
如果使用var创建了全局变量a
,则无法删除它。
答案 1 :(得分:2)
在没有var关键字的全局范围内声明的Javascript变量将附加到window对象。因此,它们是删除(和内存清理)的候选者。
如果你想声明一个全局变量(这是坏的),那么最好将它明确地附加到窗口对象(并且它将强调变量是全局的这一事实)。
将它放在一个全局对象中会更好,它将扮演一个名称空间的角色,并保护你的变量不被另一个脚本覆盖。