正如这两个讨论所说:
javascript global variable with 'var' and without 'var' [duplicate]
Difference between using var and not using var in JavaScript
当全局变量带有“var”时,应该没有区别。
但是,以下两段代码会得到不同的结果。
第一个:
if(h == undefined){
h = 4;
}
第二个:
if(h == undefined){
var h = 4;
}
对于第一个,我将收到错误消息:“ReferenceError:h未定义。”
然而第二个很好。
真正奇怪的是var h = 4;
在h == undefined
之后,但它可以以某种方式初始化全局变量。
答案 0 :(得分:0)
您需要在块外部初始化变量h以获得所需的结果... Javascript没有块范围。但是,D. Crockford说,并不总是很好。
答案 1 :(得分:0)
正如Musa所指出的,JS首先执行变量声明(在你所处的上下文中)。因此,如果您在上下文中定义了一个带变量的变量,那么它将是未知的,值为undefined。既然你应该声明你的变量而不是依赖于全局范围,你应该总是使用第二个。如果您想出于特殊原因使用第一个,可以这样写:
if (window.h === undefined) {
h = 4;
}