只需使用!obj检查undefined和null

时间:2018-07-27 01:10:15

标签: javascript

我知道undefined不是===null,但是!运算符呢?如果我有执行此检查的代码,则

if (obj === undefined || obj === null)

将其简化为

if(!obj)

它们相同吗?

3 个答案:

答案 0 :(得分:1)

否。

!obj对于0之类的虚假信息也适用。

obj === undefined || obj === null仅在objnullundefined的情况下为真。

!obj对于任何虚假值都是正确的。

它们是:

  • false(本质上不是真的“虚假”……)
  • 0
  • ""
  • null
  • undefined
  • NaN

答案 1 :(得分:1)

在检查中使用!运算符时,是否比较所有falsey

下面是falsey值的列表:

  • false
  • 0和其他数字零形式,例如-0、0.0和0x0(十六进制形式记入RBT)
  • “”,“和”-长度为0的字符串
  • 未定义
  • NaN
  • document.all

换句话说:

let obj = '';

if(!obj) { console.log('opps, not undefined, still printing')}

答案 2 :(得分:0)

不是。

任何伪造的值都会通过测试:0,-0,null,未定义,空字符串,false。