【问题标题】:TypeError: null is not an object (evaluating '*')TypeError:null 不是对象(评估“*”)
【发布时间】:2017-12-05 14:07:38
【问题描述】:

以下代码:

var item = cartModel.getlist()[index];
if((item.isDepo()) {
    // Some code
} else if(!permission.hasPermissionToVoidSKU()) {
    // Some code
} else if(item.sku.indexOf(mposConstants.RESTOCK_FEE_SKU) > -1){
                // Some code 
}

我收到此错误:

TypeError: null 不是对象(评估 'item.sku.indexOf')

如果 item 对象为 null,则错误是不同的(见下文)。 在什么情况下会抛出这个错误?

更新:

如果item.sku 为空,则错误为:

[致命] [] [-] ["TypeError: 无法读取属性 'indexOf' of null

如果item 为空,则错误为:

[致命] [] [-] ["TypeError: 无法读取属性 'isDepo' of null

【问题讨论】:

  • itemitem.sku 为空,在控制台中检查它们
  • 你能澄清你在问什么吗?
  • @freginold 我想知道在什么情况下会抛出这个错误
  • 你丢失了参考资料(它被删除了?);在元素被解析到 DOM 之前调用了引用函数
  • 如果itemitem.skuundefined 而不是null,你会得到什么错误?

标签: javascript angularjs json


【解决方案1】:

不同的错误信息的原因很简单,它们是由不同的浏览器产生的。错误是一样的(对象item上的skunull)。

给定以下代码

<script>
  var item = {sku: null};
  item.sku.indexOf("");
</script>

以下是针对不同浏览器的一些错误消息:

  • 火狐:TypeError: item.sku is null
  • Firefox 开发者版:TypeError: item.sku is null, can't access property "indexOf" of it
  • 歌剧:TypeError: Cannot read property 'indexOf' of null at example.html:3
  • Safari:TypeError: null is not an object (evaluating 'item.sku.indexOf')

要得到你得到的错误信息,item 必须定义为一个对象,sku 必须设置为null。如果skuundefined,您将收到这样的错误消息(Safari):TypeError: undefined is not an object (evaluating 'item.sku.indexOf')。如果itemnull,你会得到这样的东西:TypeError: null is not an object (evaluating 'item.sku')

【讨论】:

    【解决方案2】:

    基于this answer 和其他人,听起来您遇到了该错误,因为在加载它引用或作用的 DOM 元素之前调用了一个函数。

    在您提供的代码的 sn-p 中,我没有看到对任何 DOM 元素的直接引用,但我建议在您的 HTML 完成渲染后调用您的脚本(即通过将任何 &lt;script&gt; 标签放在HTML 的结尾,或者如果您使用 jQuery,则使用 $(document).ready() 调用)。

    【讨论】:

      猜你喜欢
      • 2021-01-13
      • 2020-11-21
      • 2021-05-27
      • 2021-12-29
      • 2020-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多