检查是否定义了javascript对象/属性
Check if javascript object/property is defined
所以我读了一些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
不存在。
相关文章:
- 如何从对象的原型方法访问JavaScript对象属性
- 如何将数组项添加到对象属性中
- 设置嵌套对象属性的更好方法
- JavaScript管理具有重复属性名称的对象属性
- 如何使用element.myobj.prop等具有对象属性的元素
- 如何使用(this)访问Angular 2 http rxjs catch函数中的对象属性
- Es6:能够在设置/更新/删除对象属性时调用自定义方法
- 如何在AngularJS工厂中正确声明对象属性
- 如何使用object.assign()从其他对象引用基本对象属性
- 使用XPath样式访问Javascript JSON对象属性
- 将javascript对象(属性+值)合并到一个对象中
- 数组:使对象属性成为数组键
- 无法从JavaScript中的函数调用对象属性
- Google Closure Advanced |无法识别对象属性|动态属性
- Javascript从匿名函数访问外部对象属性
- 从函数更改对象属性
- 如何从字符串变量访问对象属性
- 从嵌套对象属性中获取排除某个值的最高值
- 在Aurelia computeds中,当设置依赖关系时,如何声明对对象属性的依赖关系
- 传递数量不确定的可能嵌套的对象属性