参数1 | 参数2 | 转换规则 |
布尔值 | 其它 | 布尔值转为数值:false转为0,true转为1 |
字符串 | 数值 | 将字符串转为数值类型 |
对象 | 不是对象 | 调用对象的valueOf()或者toString()方法转换为基本数值类型在进行比较 |
null | undefined | 相等 |
null或者undefined | 其它类型 | 不将null/undefined转换为其它的任意类型,始终返回false |
NaN | NaN或其它 | 始终不相等 |
对象 | 对象 | 比较他们是不是同一个对象,即引用地址是否一样 |
[] == true
{} == true
[] == [] false 都是对象,但是引用地址不一样
{} == {} false 都是对象,但是引用地址不一样
0 == [] true []在比较前转为0,所以结果为true
[] == [] true []转为false,-->0==[]-->0==[].toString()=""-->0==""-->0==0
!{}=={} false !{} 转为false,-->0=={}-->0==({}).toString()="[object object]"-->0==NaN
类型相等,且值相等,不会做任何转换
注意NaN不与任何值相等,包括他本身
原文:https://www.cnblogs.com/ailingstar/p/12336666.html