为什么If语句在检查是否未定义时抛出一个未定义的错误?

时间:2018-05-07 15:18:05

标签: javascript if-statement

为什么我的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];
}

1 个答案:

答案 0 :(得分:4)

因为location [0]未定义。这有点奇怪,但你的检查应该是:

if( location[0] && location[0].properties){ /* .. */}

我省略了===undefined,这是不需要的。它会测试它是否为thruthy or falsey 这是检查JS中变量的常用方法。