Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/476.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
变量声明JavaScript:在全局空间中使用var关键字?为什么?_Javascript - Fatal编程技术网

变量声明JavaScript:在全局空间中使用var关键字?为什么?

变量声明JavaScript:在全局空间中使用var关键字?为什么?,javascript,Javascript,我目前正在尝试学习JavaScript的基础知识 到目前为止我所理解的(如果我在某个地方错了,请纠正我):该语言只区分全局范围和函数范围 在函数中,在声明函数范围的变量时必须使用var关键字。否则,将自动声明全局变量 但当我身处全球空间时: 有必要在那里也使用var关键字吗 我的意思是:我声明了一个全局变量 那么,在那里使用var也有意义吗?如果是这样的话:哪种感觉?一个小实验: window.a = 1; // define global variable 'a' console.log(a

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

到目前为止我所理解的(如果我在某个地方错了,请纠正我):该语言只区分全局范围和函数范围

在函数中,在声明函数范围的变量时必须使用var关键字。否则,将自动声明全局变量

但当我身处全球空间时:

有必要在那里也使用var关键字吗

我的意思是:我声明了一个全局变量

那么,在那里使用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创建的,则无法删除

一个小实验:

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得到了它!:)谢谢。