JavaScript简短表单,用于检查对象中是否存在属性

时间:2017-01-09 15:02:33

标签: javascript

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

if(object) {
  //do something
}

if(object.attr) {
      //do something
    }

这是if(object !== undefined)还是if(object !== null)的简短形式?

1 个答案:

答案 0 :(得分:3)

这是

的简短形式
if (object !== "" && 
    !Number.isNaN(object) &&
    object !== 0 &&
    object !== false &&
    object !== undefined &&
    object !== null)

isNaN()检查有点棘手; " old"全局isNaN()会将其参数强制转换为数字,因此传递一个字符串,如" foo"到isNaN()返回true,即使字符串" foo"并非NaN。数字构造函数上的较新isNaN()方法不会执行该强制,因此Number.isNaN("foo")为false。

请注意,在检查是否存在对象属性时,undefined存在歧义。属性可能存在于对象上但没有价值。在这种情况下,in运算符非常有用:

if ("something" in object)

测试对象是否具有名为""无论价值如何。