【问题标题】:TypeError: is null类型错误:为空
【发布时间】:2016-01-20 08:52:43
【问题描述】:

我有一种情况,我声明了一个对象var o = null;

然后,我将它传递给一个函数,做一些事情并可能为它分配一个对象。

稍后,我执行parse(o.page)。 如果o 为空,则我得到“TypeError: o.page is null”, 并且程序停在那里,因为我正在尝试获取空值的属性。

我知道一种解决方案是最初将 null 分配给 o 的所有属性。

只是想知道是否有更微妙的方法来处理这个错误。 因为我想处理parse1(o);parse2(o.page1),其中o 可以为空。

【问题讨论】:

  • 如果您展示更多代码,我想会有一种方法可以创建一个完全避免该问题的优雅解决方案。

标签: javascript typeerror


【解决方案1】:

您可以使用三元运算符来执行此操作:

parse2(o ? o.page1 : null)

onull 时,无法让o.page 自行工作。

存在其他方式,例如返回 {} 而不是 null,因为调用不存在的属性会产生 undefined 而不是引发错误。

一般而言,建议避免无效调用在您的代码中逗留的情况。要么在使用之前检查返回值(如上所示),要么不返回可能使后续代码无效的值。

【讨论】:

    【解决方案2】:

    分配一个空对象,而不是null

    var o = {};
    

    如果属性是null,则不能将其分配给o。这将导致

    TypeError: Cannot set property 'propname' of null
    

    【讨论】:

      猜你喜欢
      • 2014-01-10
      • 2015-03-06
      • 2013-07-20
      • 2020-06-21
      • 1970-01-01
      • 2013-11-29
      • 2012-06-13
      • 2013-03-07
      相关资源
      最近更新 更多