Javascript 操作员类型未按预期操作

Javascript 操作员类型未按预期操作,javascript,function,if-statement,undefined,typeof,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') { ale

我试图检查是否存在特定的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收到以下错误:

索引:21未捕获类型错误:无法读取未定义的属性“name”

当然,我使用typeof检查对象的状态本身不应该导致错误?在第一次迭代中,警报框按预期显示,因为:

数据[0]。标签[0]。名称=我是一个值

但是,

数据[0]。标签[1]。名称


由于标签数组为空,导致错误。

这肯定按预期工作

当然,我使用typeof检查对象的状态本身不应该导致错误

当然,如果名称未定义。在这种情况下,数据[0]。标签[0]已未定义


如果要允许所有级别都未定义,那么在检查其中的嵌套对象之前,您必须为每个级别嵌套带有typeof的if语句。

这肯定能按预期工作

当然,我使用typeof检查对象的状态本身不应该导致错误

当然,如果名称未定义。在这种情况下,数据[0]。标签[0]已未定义


如果要允许未定义所有级别,则在检查其中的嵌套对象之前,必须为每个级别嵌套类型为的if语句。

在检查数据[x]的if类型之前。标签[0]。名称!='“未定义”,请确保数据类型[x]。标签[0]!='未定义

if (typeof data[x].labels[0] !== 'undefined')
{
    alert("Object Exists");
}

在检查数据[x]的类型之前。标签[0]。名称!='“未定义”,请确保数据类型[x]。标签[0]!='未定义

if (typeof data[x].labels[0] !== 'undefined')
{
    alert("Object Exists");
}

typeof只返回值的类型。在计算生成值的表达式时,肯定会出现错误。示例:foo的类型。如果foo不是一个函数,这将抛出一个错误。typeof只返回值的类型。在计算生成值的表达式时,肯定会出现错误。示例:foo的类型。如果foo不是一个函数,这将抛出一个错误。我多么希望Javascript有像Coffeescript和Ruby那样的内联存在操作符,这样您就不会被手动编写这些嵌套检查的开销所困扰。e、 g.data[0]?.labels[0]?.name我多么希望Javascript有像Coffeescript和Ruby那样的内联存在运算符,这样您就不会被手动编写这些嵌套检查的开销所困扰。e、 g.数据[0]?.标签[0]?.名称