首先下面几种情况,为false
false
null
undefined
"" 即空字符串
0 注意"0"是true 0=="0"也是true
NaN
另外undefined是false,但是(undefined==false)和(false==NaN)以及(undefined==NaN)判断也是false
对象相比(其实就是比较引用)一般都是false 比如{}=={} null是例外 是对象 但null==null是true
还有几个特殊的true
[]是true 但是 []==false []==0 []=='' 也都是true
加个总结吧
==号的比较相比于===
多了类型自动转换
[]会转换成字符串'' [1,2,3]会变成'1,2,3' 中间没空格 所以不用惊讶 [1,2,3]=='1,2,3' [1]==1 [0]==0 也是true
NaN是算数字的所以比较是不会转换成别的 并且NaN不等于任何值
而false在比较时则表现为0 所以 false=='0' 也是true 类似的true表现为1 甚至 你用true+1会得到2