一、相等操作符
- 操作符的两边都是对象,只有当两个操作数为同一对象的引用时才返回true。
- 当两个操作数为null或者undefined时,null == null 、undefined == undefined 、null == undifined都返回true,null、undefined与其它类型比较都返回false。
- 当数字、字符串、布尔值两种不同类型进行比较时,字符串、布尔值都会被转换成数字然后进行比较;true会被转换成1,false会被转换成0。
- 当操作数之一是对象,另一为数字、字符串、布尔值时,会调用对象的valueOf和toString方法将对象转换为原始值,然后与另一操作数进行比较。valueOf的优先级高于toString。
- 当两个操作数类型相同时,String与String需字符串完全相同,Number与Number需值相当(NaN与任何类型操作数比较都返回false,NaN == NaN也返回false),Boolean与Boolean只有两个操作数都是true或都是false时返回true。
二、严格相等操作符
严格相等操作符与相等操作符的区别在于进行比较时不进行类型的转换,严格相等操作符始终将两种不同类型的操作数视为不同。