1. [] 与 ![]
[] == false //=> true
![] == false //=> true
[] == ![] //=> true
[] == [] //=> false
if( [] )
console.log("true");// => log: "true"
2. "" 与 " "
"" == false //=> true
" " == false //=> true
"" == " " //=> false
if("")
console.log("true")
else console.log("false") //log: "false"
if(" ")
console.log("true")//log: "true"
3. "0" 与 0
0 == false //=> true
"0" == false //=> true
"0" == 0 //=> true
if("0")
console.log("true")//log: "true"
4. 混合
[] == 0 //=> true
[] == "0" //=> false
[] == " " //=> false
[] == "" //=> true
0 == "" //=> true
0 == " " //=> true
结论: 存在以下几种特殊情况
-
[] == "" == 0 == false
-
"0" == 0 == false
-
" " == 0 ==false
除此以外,[]、" "、"0"都不会被视为false。
这也许也是我们要尽量避免使用==的原因之一。
(ps: 主要原因应该是可恶的:"1" == 1)
(ps2: 还能用的地方应该是null == undefined)