当我解析来自谷歌地图等的JSON字段时,这是一团糟。因为它们不是专门为我的脚本制作的,所以我必须验证很多细节,特别是因为每个国家的地址都不同。
简短问题:当脚本找到未定义的属性时,脚本会中断...错误..
如何验证属性是否已定义?
if(data.Placemark[i].AddressDetails.Country
.AdministrativeArea.SubAdministrativeArea.Locality != null) {
/***do something***/
}
这样的事情似乎无法解决问题。为什么呢?
答案 0 :(得分:3)
在JavaScript中,访问不存在的对象的属性会返回undefined
,而不是null
- 哎呀,你在标题中说了这个。
因此,假设 all 以前的属性确实存在,您可以使用Locality
检查typeof
属性是否存在,如下所示:
if(typeof (data.
Placemark[i].
AddressDetails.
Country.
AdministrativeArea.
SubAdministrativeArea.
Locality) !== 'undefined') {
/***do something***/
}
或者,(我想)您可以使用hasOwnProperty()
:
if (data.
Placemark[i].
AddressDetails.
Country.
AdministrativeArea.
SubAdministrativeArea.hasOwnProperty('Locality'))
{
/*** do something ***/
}
答案 1 :(得分:0)
首先,在javascript中你可以像java或其他编程语言一样使用“try / catch”,如果出现问题,这可以让你的代码继续运行......
对于您的问题,您可以测试:
if (typeof(data.Placemark[i].AddressDetails.Country
.AdministrativeArea.SubAdministrativeArea.Locality)
&&
data.Placemark[i].AddressDetails.Country
.AdministrativeArea.SubAdministrativeArea.Locality.length>0) {
}