JavaScript短格式,用于检查对象中是否存在属性

JavaScript短格式,用于检查对象中是否存在属性,javascript,Javascript,我最近收到了一些JS代码,我经常看到如下语句: if(object) { //do something } 或 这是ifobject!==未定义或用于ifobject!==空的 这是 if (object !== "" && !Number.isNaN(object) && object !== 0 && object !== false && object !== undefined &am

我最近收到了一些JS代码,我经常看到如下语句:

if(object) {
  //do something
}

这是ifobject!==未定义或用于ifobject!==空的

这是

if (object !== "" && 
    !Number.isNaN(object) &&
    object !== 0 &&
    object !== false &&
    object !== undefined &&
    object !== null)
isNaN检查有点棘手;旧的全局isNaN将强制其参数为数字,因此将类似foo的字符串传递给isNaN将返回true,即使字符串foo不是真正的NaN。number构造函数上较新的isNaN方法不执行强制,因此number.isNaNfoo为false

请注意,在检查对象属性是否存在时,存在未定义的歧义。属性可能存在于对象上,但没有值。in运算符在以下情况下很有用:

if ("something" in object)
测试对象是否具有名为something的属性(不考虑值)

if ("something" in object)