以下代码:
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'为null
如果item
为空,则错误为:
[致命] [] [ - ] [“TypeError:无法读取属性'isDepo'为null
答案 0 :(得分:3)
产生不同错误消息的原因很简单,它们是由不同的浏览器产生的。错误是相同的(对象sku
上的item
是null
)。
给出以下代码
<script>
var item = {sku: null};
item.sku.indexOf("");
</script>
这是针对不同浏览器的一些错误消息:
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
。如果sku
是undefined
,那么您将得到以下错误消息(Safari):TypeError: undefined is not an object (evaluating 'item.sku.indexOf')
。如果item
是null
,那么您将得到类似的内容:TypeError: null is not an object (evaluating 'item.sku')
。
答案 1 :(得分:1)
基于this answer和其他人,听起来你得到了这个错误,因为在它引用或作用的DOM元素被加载之前调用了一个函数。
在您提供的代码段中,我没有看到任何DOM元素的直接引用,但我建议在HTML完成呈现后调用您的脚本(即通过放置任何<script>
标记在HTML的末尾,或者如果使用jQuery,则使用$(document).ready()
调用。)