Javascript 操作员类型未按预期操作
我试图检查是否存在特定的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
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]?.名称