1、如果一个数为数值另一个数为字符串,则字符串会转化为数字,然后再进行比较
2、其他类型的数据和布尔值类型的数据进行比较,其他类型的数据会先转化为布尔值类型然后再进行比较
3、undefined 和 null比较的结果为 true。其他值和他们比较都返回假值。
4、如果一个操作值为NaN,则进行相等比较时,返回的结果是false。NaN和NaN都不相等。
5、对象和非对象进行比较,对象先进行toPrimitive转化为基本数据类型,然后再进行比较。
console.log(new String("112") == "112") //true
console.log(new String("112") === "112") //false
这里左边的new String("112")是一个字符串对象,但是右边是一个基本类型的数
据,在进行"=="比较时,左边的会先经过toPrimitive进行转换,转化后变成字符
串然后再和右边比较。而"==="则不会进行默认转换。所以得到的结果是false。
6、如果左右两个操作符都是对象,则比较左右两边所指向对象的地址是否相同,如
果相同则返回true,如果不同则返回false。