JavaScript 在没有全局变量初始化值的情况下得到错误



正如这两个讨论所说:

JavaScript 全局变量,带 'var' 和不带 'var' [重复]

在 JavaScript 中使用 var 和不使用 var 的区别

当全局变量是否带有"var"时,应该没有什么不同。

但是,以下两个代码片段会得到不同的结果。

第一个:

if(h == undefined){
  h = 4;
}

第二个:

if(h == undefined){
  var h = 4;
}

对于第一个,我将收到错误消息:"引用错误:未定义h。

但是第二个很好。

真正奇怪的是,var h = 4;是在h == undefined之后,但它允许全局变量以某种方式初始化。

正如Musa指出的那样,JS首先执行变量声明(在你所处的上下文中)。 因此,如果您在上下文中使用 var 定义了一个变量,它将是已知的,其值为 undefined。由于无论如何都应该声明变量而不是依赖全局范围,因此应始终使用第二个变量。如果出于特定原因想使用第一个,可以这样写:

if (window.h === undefined) {
    h = 4;
}

您需要在块外部初始化变量 h 以获得所需的结果......Javascript没有块范围。但D.克罗克福德说的并不总是很好

相关内容

  • 没有找到相关文章

最新更新