变量声明JavaScript:在全局空间中使用var-keyword?是什么原因?

时间:2016-05-01 10:47:22

标签: javascript

我目前正在尝试学习JavaScript的基础知识。

到目前为止我所理解的(如果我在某处出错,请纠正我):语言仅区分全局和功能范围。

在函数中,在声明函数范围的变量时必须使用var-keyword。否则,您将自动声明一个全局变量。

但是当我还在全球空间时:

是否有必要在那里使用var-keyword?

我的意思是:无论如何我都声明了一个全局变量。

那么在那里使用var也有意义吗?如果是这样的话:哪种感觉?

2 个答案:

答案 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,则无法删除它。

Read more

答案 1 :(得分:2)

在没有var关键字的全局范围内声明的Javascript变量将附加到window对象。因此,它们是删除(和内存清理)的候选者。

如果你想声明一个全局变量(这是坏的),那么最好将它明确地附加到窗口对象(并且它将强调变量是全局的这一事实)。

将它放在一个全局对象中会更好,它将扮演一个名称空间的角色,并保护你的变量不被另一个脚本覆盖。