【JavaScript】==运算符包含的类型转换 ([ ] == [ ]与{ } == { })

时间:2023-01-28 20:24:02

示例:

  [] == []     // 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、任何其它的混合类型是不相等的