[0] == true; // false [] == ![]; // true
相等操做符会有一个隐形的转换,这个隐形的转化会致使结果很"奇怪"。下面是隐形转换的基本规则:code
[0] == true; // 最终的对比形式 Number([0]) == Number(true);
[] == ![]; // !的运算级别比 '==' 高,先进行如下转换 [] == false; // 再转化为最终的对比形式 Number([]) == Number(false);
undefined == 0; // false null == 0; //false false == 0; //true true == 1; //true true == 2; //false [] == []; //false