Javascript 当我检查If语句是否未定义时,为什么If语句抛出未定义的错误?

Javascript 当我检查If语句是否未定义时,为什么If语句抛出未定义的错误?,javascript,if-statement,Javascript,If Statement,为什么我的else if语句会导致解析器抛出未定义的错误?我知道它是未定义的,这就是我检查的原因,我希望它在本例中命中else块,因为此函数用于多个位置,传递的数据并不总是相同的。因此,我试图检查传入的数据类型 if(icon){ dv.find(".mobCol>.image").html(generateIcon(icon)); } else if(location[0].properties !== undefined){ dv.find(".mobCol>.i

为什么我的else if语句会导致解析器抛出未定义的错误?我知道它是未定义的,这就是我检查的原因,我希望它在本例中命中else块,因为此函数用于多个位置,传递的数据并不总是相同的。因此,我试图检查传入的数据类型

if(icon){
    dv.find(".mobCol>.image").html(generateIcon(icon));
}
else if(location[0].properties !== undefined){
    dv.find(".mobCol>.image").html(generateIcon(location[0].properties.image));
    data = location[0];
}
else{
    dv.find(".mobCol>.image").html(generateIcon(location.features[0].properties.image));
    data = location.features[0];
}

因为位置[0]未定义。这有点奇怪,但你的支票应该是:

if( location[0] && location[0].properties){ /* .. */}
我省略了
==未定义的
,这是不需要的。它测试它是否是某个东西

这是检查JS中变量的常用方法。

因为位置[0]未定义。这有点奇怪,但你的支票应该是:

if( location[0] && location[0].properties){ /* .. */}
我省略了
==未定义的
,这是不需要的。它测试它是否是某个东西

这是检查JS中变量的常用方法。

=而不是
==
@John,这不会解决任何解析器错误。因为您正在检查至少超过一个级别的
未定义的
=而不是
==
@John,这不会解决任何解析器错误。因为您至少检查了
未定义
的一个级别。这对我很有效!非常感谢。“如果设置了某些内容,它将返回true”则为false。如果位置[0]为null、false、0、NaN或空字符串,它也将返回false。使用链接对其进行了重新设置:)这对我很有效!非常感谢。“如果设置了某些内容,它将返回true”则为false。如果位置[0]为null、false、0、NaN或空字符串,则它也将返回false。使用链接对其进行了重新设置:)