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