如何检查属性是否包含属性

Fab*_*ook 0 javascript properties conditional-statements

我需要检查属性是否包含属性,现在我正在使用if示例中的语句

这是一个示例对象

var Foo = {
    "bar" : 
        {
            "foobar":
                {
                    "barfoo":1
                }
        }
}
Run Code Online (Sandbox Code Playgroud)

我需要检查是否barfoo存在,但首先我需要检查是否所有其他属性都存在,因为它们可能不依赖于是否已经运行了另一个函数.我无法真正减少这种结构的水平,所以这不是一个选择.

目前我正在做类似的事情:

var d = Foo;
if (d) {
    d = d.bar;
    if (d) {
        d = d.foobar;
        if (d) {
            d = d.barfoo;
            if(d){
                console.log(d);
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Coi*_*_op 5

您可以在一个if声明中完成所有操作:

if (d && d.bar && d.bar.foobar && d.bar.foobar.barfoo)
Run Code Online (Sandbox Code Playgroud)

这是有效的,因为如果任何元素失败,javascript会停止检查if语句,因此它不会出现类似的错误cannot check property of undefined.

否则你可以使用try catch语句:

var barfoo;
try{
  barfoo = d.bar.foobar.barfoo
}
catch(e){
  barfoo = null;
}
Run Code Online (Sandbox Code Playgroud)