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

Check if javascript object/property is defined

本文关键字:对象 属性 javascript 是否 定义 检查      更新时间:2024-04-26

所以我读了一些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。很抱歉没有更具体!

如果您想要在对象树下进行未定义的安全检查,可以使用:

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

如果你可以奢侈地拥有Lodash:

var d = { 
     parent: {
          name: "Joe"
     }
};
if ( typeof (_.get(d, "parent.name")) === 'undefined' ) {
}

尝试用逻辑OR 检查所有子级

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

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

我认为错误是属性标识符parent。您确定您的对象具有该属性吗?标识符d可能是无效的,因为parent不存在。