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

时间:2016-04-11 21:13:43

标签: javascript function if-statement undefined

所以我读了一些SO帖子和一些博客,但仍然无法弄清楚为什么我的代码无效。

我的代码:

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

d是一个类似于:

的对象
Object { 
children: Object, 
count: 676
}

我已尝试使用(!d.parent.name)hasOwnProperty===,并使用typeof进行上述操作。有什么建议吗?

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

更新:

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

4 个答案:

答案 0 :(得分:5)

如果要在对象树中一直检查未定义的安全检查,可以使用:

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

}

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

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

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

}

答案 1 :(得分:4)

尝试检查具有逻辑OR

的所有儿童
if (typeof d == "undefined" ||
    typeof d.parent == "undefined" ||
    typeof d.parent.name == "undefined") {
// ...
}

答案 2 :(得分:2)

if(typeof x === 'undefined')

使用它,它会检查类型和值,这就是你需要的东西。

答案 3 :(得分:0)

我认为错误是属性标识parent。你确定你的物品有财产吗?标识符d可能无效,因为parent不存在。