【发布时间】:2014-07-11 14:45:41
【问题描述】:
我不时遇到的一个“问题”是我有一个对象,例如user = {} 并在使用该应用程序的过程中填充。假设在某个地方,在 AJAX 调用或我这样做之后:
user.loc = {
lat: 50,
long: 9
}
在另一个地方我想检查user.loc.lat 是否存在。
if (user.loc.lat) {
// do something
}
如果它不存在,这将导致错误。如果user.loc.lat 是undefined,user.loc 当然也是undefined。
"Cannot read property 'lat' of null" - Dev Tools error
这意味着我需要像这样检查它:
if (user.loc) {
if (user.loc.lat) {
// do something
}
}
或
if (user.loc && user.loc.lat) {
// do something
}
这不是很漂亮,而且我的对象越大,效果就越差 - 显然(想象一下 10 层嵌套)。
如果user.loc 也是undefined,if(user.loc.lat) 不只是返回 false,这让我感到很沮丧。
检查这种情况的理想方法是什么?
【问题讨论】:
-
试试这个
if(user && user.loc && user.loc.lat) { -
您可以使用typeof检查 null 和 undefined 的值
-
@AamirAfridi——尽管 OP 是这样写的,但测试应该停止在最后一个对象,而不是属性。例如如果
user.loc.lat存在但具有错误值(例如0),则测试将返回错误。 :-)
标签: javascript object javascript-objects