我最近得到了一些JS代码,我经常看到如下语句:
if(object) {
//do something
}
或
if(object.attr) {
//do something
}
这是if(object !== undefined)
还是if(object !== null)
的简短形式?
答案 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)
测试对象是否具有名为""无论价值如何。