假设我有一个名为 John 的对象,里面有许多其他嵌套对象,我正在尝试按照以下方式访问它们
if (john.address.highstreet) {
var highstreet = john.address.highstreet
}
但如果地址属性为空,那么我会得到一个错误
unable to get property 'highstreet' of undefined
我的函数执行停止
有没有办法访问嵌套属性而不进行许多嵌套的if语句
,如下所示:if (john.address) {
if (john.address.highstreet) {
var highstreet = john.address.highstreet
}
}
标准方式是
if (john.address && john.address.highstreet) {
var highstreet = john.address.highstreet
}
如果未定义地址,则返回该地址。
您可能希望使用更聪明的方式来访问这些属性。像getPropertyByString("john.address.highstreet")
.如果无法解析路径,此函数可能会返回null
或未定义。
正如阿尔尼塔克的回应一样
因此,您的代码可能如下所示:
var highstreet = getPropertyByString("john.address.highstreet");
另一种方法是使用 try-catch-block。
try {
var highstreet = john.address.highstreet;
} catch (err) {
// do error handling
}
您还可以使用 hasOwnProperty 方法来检查属性
if(john.hasOwnProperty("address") && john.address.hasOwnProperty("highstreet"))
{
var highstreet = john.address.highstreet
}