嵌套对象,防止"cannot get value of 'undefined'"



假设我有一个名为 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
}

相关内容

最新更新