类型错误:null 不是对象(评估 '*')

I'm*_*hin 3 javascript json angularjs

对于以下代码:

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 
}
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

类型错误:null 不是对象(评估“item.sku.indexOf”)

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

更新:

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

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

如果item为空,则错误为:

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

Mic*_*sen 11

出现不同错误消息的原因很简单,因为它们是由不同的浏览器产生的。错误是相同的(sku在对象上itemnull)。

鉴于以下代码

<script>
  var item = {sku: null};
  item.sku.indexOf("");
</script>
Run Code Online (Sandbox Code Playgroud)

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

  • 火狐: TypeError: item.sku is null
  • 火狐开发者版: TypeError: item.sku is null, can't access property "indexOf" of it
  • 歌剧: TypeError: Cannot read property 'indexOf' of null at example.html:3
  • 苹果浏览器: 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')