Orion's Studio.

JS“空”之禅

2017/04/06

测了我好半天

// 虽然只是for循环

先来确定有哪些空值

我们通过 ** if ** 来验证下候选值的真伪(最后一个纯属搞笑

NaN undefined null false 0 -0 ‘’ [] ‘false’
X X X X X X X

那么能明确至少有七个值是空的,其实还有一个真“空”

比如

1
2
3
Boolean(NaN) //false
Boolean(undefined) // false
Boolean(null) // false

都是空的

而 Boolean() 也为“空”,这就是第八空“真空”

判断空数组返回真值倒是在意料之外,不过一般也不会进行这样的判断就是了,直接 [].length 就猴了

然后我们就来比较吧

先是双等号的情况:

== NaN undefined null false 0 -0 ‘’ [] ‘false’
NaN X X X X X X X X X
undefined X X X X X X X
null X X X X X X X
false X X X X
0 X X X X
-0 X X X X
‘’ X X X X
[] X X X X X
‘false’ X X X X X X X X

然后是三等号的情况:

=== NaN undefined null false 0 -0 ‘’ [] ‘false’
NaN X X X X X X X X X
undefined X X X X X X X X
null X X X X X X X X
false X X X X X X X X
0 X X X X X X X
-0 X X X X X X X
‘’ X X X X X X X X
[] X X X X X X X X X
‘false’ X X X X X X X X

这么快就到总结啦

首先,** 正零 ** 和 ** 负零 ** 在逻辑判断上没有任何区别,而** NaN ** 是超绝缘体和任何值都不等包括自身!

然后 ** null ** 和 ** undefined ** 相似但不完全相等, ** false ** 、** 0 ** 、 ** ‘’ ** 和 ** [] ** 相似但不完全相等

(装作没看到 ** ‘false’ **

CATALOG
  1. 1. 测了我好半天
  2. 2. 先来确定有哪些空值
  3. 3. 然后我们就来比较吧
  4. 4. 这么快就到总结啦