javascript - 如果对象未定义,为什么 "if ( ! Object.property)"会中断?

标签 javascript

如果我想检查对象的属性是否存在,我必须确保该对象存在,这对我来说似乎很愚蠢。如果一个对象未​​定义,那么它的所有属性也应该是未定义的。

那么为什么会发生类似的事情

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/

相关文章:

javascript - 如何获取具有重复属性名称的对象中的最大属性值?

javascript - 真的适合 "node.js"开发的 OS X 编辑器(或 IDE)?

javascript - 如何在javascript中使用证书的私钥对消息进行签名

javascript - JS 脚本可以阻塞整个服务器吗?如果是这样,我怎样才能摆脱这种攻击呢?

javascript - react : redux persistence in local storage

javascript - 用于将更高的内联 block div 放入其容器行的 jQuery 选择器

javascript - 为什么 clearTimeout 不清除此 react 组件中的超时?

javascript - 使用 JSONP 加载 html 页面

javascript - promise 中绑定(bind)参数的状态

javascript - IBM Bluemix Node.js 原生 Promise 支持