undefined == null; //true
1 == true; //true
2 == true; //false
0 == false; //true
NaN == NaN //false
[] == false //true
[] == ![] //true
只解释最后的两个;对于0,空字符串的判断建议使用"===".
"==="会先判断两边的值类型,类型不匹配就会返回false;
现在解释[] == false;
单独 [] 的boolean类型是true;那么问题来了,为什么会和false相等呢?
因为这里特殊,空数组会转化成数字类型去比较;
Number([]) //0
Number(false) //0
[] == false //true
同理:
[] == ![] //true
这个更特殊;
有不合理的地方欢迎指正!!!