【问题标题】:JavaScript get error without initialized value of global variableJavaScript在没有全局变量初始化值的情况下出错
【发布时间】:2013-09-12 12:54:42
【问题描述】:

正如这两个讨论所说:

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 is not defined.”

但是第二个很好。

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

【问题讨论】:

标签: javascript scope global-variables runtime-error var


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    您需要在块之外初始化变量 h 以获得所需的结果... Javascript 没有块作用域。但 D. Crockford 说,效果并不总是很好

    【讨论】:

    • 对不起,我的意思不是。我没有错过
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-03
    • 1970-01-01
    • 2017-04-22
    • 2015-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多