我正在尝试检查特定的javascript对象是否存在。
var success = function(data) {
var x= 0;
var numOfCards = data.length;
for (x=0;x<data.length - 1;x++)
{
if (typeof data[x].labels[0].name !== 'undefined')
{
alert("Object Exists");
}
}
}
但是,Chrome收到以下错误:
(index):21 Uncaught TypeError:无法读取未定义的属性“name”
当然,我使用typeof来检查对象的状态本身不会导致错误吗?在第一次迭代时,警报框显示为预期,因为:
data [0] .labels [0] .name =“我是一个值”
然而,
数据[0] .labels [1]。名称
导致错误,因为“labels”数组为空。
答案 0 :(得分:4)
这绝对是按预期工作的。
当然,我使用typeof来检查对象的状态本身不会导致错误吗?
当然,如果name
未定义。在这种情况下,data[0].labels[0]
已经未定义!
如果您希望在检查其中的嵌套对象之前允许所有级别为if
,则必须为每个级别嵌套typeof
语句undefined
。
答案 1 :(得分:0)
在检查typeof data [x] .labels [0] .name!=='undefined'之前,确保typeof data [x] .labels [0]!=='undefined
if (typeof data[x].labels[0] !== 'undefined')
{
alert("Object Exists");
}