如果我想检查对象的属性是否存在,我必须确保该对象存在,这对我来说似乎很愚蠢。如果一个对象未定义,那么它的所有属性也应该是未定义的。
那么为什么会发生类似的事情
if ( ! Object.property ) {
console.log('Nope!')
} else {
console.log('Yep!')
}
如果对象未定义,就会完全中断?将属性验证嵌套在对象验证中很烦人。这不应该始终是一个合法的 if 语句吗?
最佳答案
它不起作用,因为查找属性必须首先查找(可能)定义该属性的对象。
事情就是这样——这是一种语言设计选择。设计者可以定义如果a
未定义,a.b
总是返回undefined
,但他们没有。
作为快捷方式,您可以使用以下语法:
if (obj && typeof obj.property !== 'undefined') {
// yep, it's defined (and not just "falsey")
} else {
// nope
}
关于javascript - 如果对象未定义,为什么 "if ( ! Object.property)"会中断?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11936257/