【问题标题】:Why does If statement throw an undefined error when I am checking if its undefined? [duplicate]为什么在检查 if 语句是否未定义时会抛出未定义的错误? [复制]
【发布时间】:2018-05-08 02:09:31
【问题描述】:

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

【问题讨论】:

  • != 而不是 !==
  • @John 这不会解决任何解析器错误。
  • 因为您至少要检查undefined 所在的位置之后的一层。

标签: javascript if-statement


【解决方案1】:

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

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

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

【讨论】:

  • 这对我有用!谢谢!
  • “如果设置了某些内容,它将返回 true”虽然是 false。如果 location[0] 为 null、false、0、NaN 或空字符串,它也会返回 false。
  • 用链接改写它:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-08
  • 2018-07-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-15
  • 2014-04-17
相关资源
最近更新 更多