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