检查是否定义了javascript对象/属性

As3*_*tin 3 javascript if-statement function undefined

所以我已经阅读了一些SO帖子和一些博客,但仍然无法弄清楚为什么我的代码不起作用.

我的代码:

function myFunct(d) {
    if (typeof d.parent.name == "undefined") {
        console.log("undefined") ;} else { console.log("defined") ;}
    }
Run Code Online (Sandbox Code Playgroud)

d 是一个看起来像这样的对象:

Object { 
children: Object, 
count: 676
}
Run Code Online (Sandbox Code Playgroud)

我已经尝试使用(!d.parent.name),hasOwnProperty,===,和如上面使用typeof.有什么建议?

我收到的错误是 TypeError: d.parent.name is undefined

更新:

好的,感谢大家的投入,如果问题令人困惑,我道歉.我实际上是在寻找,d.parent.parent但试图通过使用来简化问题d.parent.我认为问题是d.parent没有定义,所以它甚至没有达到d.parent.parent.抱歉没有更具体!

Jel*_*tor 5

如果您希望在对象树中一直进行未定义安全检查,则可以使用:

if( typeof( ((d || {}).parent || {}).name ) === 'undefined') {

}
Run Code Online (Sandbox Code Playgroud)

如果您有奢侈的Lodash可供您使用:

var d = { 
     parent: {
          name: "Joe"
     }
};

if ( typeof (_.get(d, "parent.name")) === 'undefined' ) {

}
Run Code Online (Sandbox Code Playgroud)