变量声明JavaScript:在全局空间中使用var关键字?为什么?
我目前正在尝试学习JavaScript的基础知识 到目前为止我所理解的(如果我在某个地方错了,请纠正我):该语言只区分全局范围和函数范围 在函数中,在声明函数范围的变量时必须使用var关键字。否则,将自动声明全局变量 但当我身处全球空间时: 有必要在那里也使用var关键字吗 我的意思是:我声明了一个全局变量 那么,在那里使用var也有意义吗?如果是这样的话:哪种感觉?一个小实验:变量声明JavaScript:在全局空间中使用var关键字?为什么?,javascript,Javascript,我目前正在尝试学习JavaScript的基础知识 到目前为止我所理解的(如果我在某个地方错了,请纠正我):该语言只区分全局范围和函数范围 在函数中,在声明函数范围的变量时必须使用var关键字。否则,将自动声明全局变量 但当我身处全球空间时: 有必要在那里也使用var关键字吗 我的意思是:我声明了一个全局变量 那么,在那里使用var也有意义吗?如果是这样的话:哪种感觉?一个小实验: window.a = 1; // define global variable 'a' console.log(a
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
如果全局变量a
是使用var创建的,则无法删除
一个小实验:
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
如果全局变量a
是使用var创建的,则无法删除
在全局范围中声明的Javascript变量(不带var关键字)将附加到窗口对象。因此,它们是删除(和内存清理)的候选对象 如果您想要声明一个全局变量(这是不好的),那么最好将它显式地附加到窗口对象(这将强调变量是全局的)
最好将它放在一个全局对象中,该对象将扮演名称空间的角色,并保护您的变量不被另一个脚本覆盖。在全局范围中声明的Javascript变量(不带var关键字)将附加到窗口对象。因此,它们是删除(和内存清理)的候选对象 如果您想要声明一个全局变量(这是不好的),那么最好将它显式地附加到窗口对象(这将强调变量是全局的)
最好将其放在一个全局对象中,该对象将扮演名称空间的角色,并保护您的变量不被另一个脚本覆盖。完全不声明全局变量是有意义的。完全不声明全局变量是有意义的。老实说,我已经很久很久没有在实际代码中使用过
delete
。@JanDvorak我也是:)@AliMamedov当我做对了:在全局空间中声明变量后,再也没有机会去掉它了?在函数中,直到函数结束,生命周期是有限的。但是在全局空间中,它理论上永远存在。@ts248如果您在全局空间中用var
声明它,则没有机会删除它。但是,如果您不使用var
关键字声明它,您可以轻松地删除它。@AliMamedow得到了它!:)非常感谢。老实说,我已经很久没有在实际代码中使用过delete
。@JanDvorak我也是:)@AliMamedov当我做对了:在全局空间中声明变量后,再也没有机会删除它了?在函数中,直到函数结束,生命周期是有限的。但是在全局空间中,它理论上永远存在。@ts248如果您在全局空间中用var
声明它,则没有机会删除它。但是,如果您不使用var
关键字声明它,您可以轻松地删除它。@AliMamedow得到了它!:)谢谢。