一、首先看双等号前后有没有NaN,如果存在NaN一律返回false
二、再看双等号前后有没有布尔,有布尔就将布尔转换为数字。(false是0,true是1)
三、接着看双等号前后有没有字符串,有三种情况:
- 对方是对象,对象使用toString()或者valueOf()进行转换;
- 对方是数字,字符串转换为数字;
- 对方是字符串,直接比较;
- 其它返回false;
四、如果是数字,对方是对象,对象取valueOf()或者toString()进行比较,其它一律返回false
五、null,undefined不会进行转换,但它们俩相等
练习题:
1 console.log([0] == true); //false
2 console.log(0 == false); //true
3 console.log(undefined == null); //true
4 console.log('0' == undefinded); //false