【问题标题】:if (a) {} throws uncaughtReferenceErrorif (a) {} 抛出未捕获的 ReferenceError
【发布时间】:2013-04-20 23:25:49
【问题描述】:

我需要能够检查一个变量是否存在(如果它没有将其分配给 {}),而不会在 javascript 中引发错误。当我尝试这段代码时

if (a) {}    

它抛出 uncaughtReferenceError

我真正想做的是这样的事情而不会引发错误:

a = a || {}    

或者看起来像这样

if (a) { a = {} }    

【问题讨论】:

  • a = a || {} 有什么问题?
  • @Kenneth 那仍然是 get-first,所以同样的错误。 a 不会被定义,如果它还没有,直到 a || {} 被评估之后。
  • 哦,我想你至少已经宣布了。在这种情况下,下面的答案完美地工作

标签: javascript null referenceerror


【解决方案1】:
if (typeof a === 'undefined'){
  // variable is not available and you can write a = {}
}

a = a || {} 很快

【讨论】:

    【解决方案2】:

    如果a 是全局对象,则可以使用全局对象 来避免错误。在浏览器中,该对象是window

    window.a = window.a || {};
    

    或者,正如 Ozerich 建议的那样,您可以使用 typeof,这不会引发引用错误:

    if (typeof a === 'undefined') {
        a = {};
    }
    

    【讨论】:

      【解决方案3】:
      a = a || {}
      

      根本行不通,因为a 没有定义。但是你可以使用typeof 来检查它是否存在。

      a = (typeof(a) === 'undefined' ? {} : a);
      

      【讨论】:

        猜你喜欢
        • 2020-02-28
        • 1970-01-01
        • 1970-01-01
        • 2023-01-23
        • 1970-01-01
        • 2018-02-20
        • 2016-12-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多