示例:
[] == [] // false [] == ![] // true {} == !{} // false {} == {} // false
分析:
1. [] == []; 两边数据类型均为对象,故比较引用地址,地址不同返回false
2. [] == ![]; ![]为强制类型转换,[] == false;
即为:[] == false ; 返回为true
3. {} == {}; 同[] == [],返回false
4. {} == !{}; {} == false,
{} == 0,{}.toString() == "[object Object]"
"[object Object]" == 0,故返回false
== 比较转换规则:
1、如果一个是null, 另外一个是undefined 或 null,则二者相等
2、如果一个是数字另外一个是字符串,将字符串转换成数字再比较
3、如果其中一个是true,转换成1再比较;如果任何一个是false,转换成0再比较
4、如果一个是个object并且另外一个是数字或字符串,将objcet转换成简单类型再比较,object通过toString或者valueOf转换
5、任何其它的混合类型是不相等的