typeof运算符未按预期运行

时间:2016-05-05 17:05:39

标签: javascript function if-statement undefined typeof

我正在尝试检查特定的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”数组为空。

2 个答案:

答案 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");
}