隐式转换
javascript中,进行一些运算的时候,会自行对运算符两侧数值进行转换成同一类型就称为隐式转换
常见的隐式转换:+、-、*、/、%、==、> 、>= 、< 、<=、 ++、--、当遇到这些运算符时,两侧数据类型不一致时通常会进行隐式转换
规则:都会将两侧变量转换成Number类型,在进行运算,如果转化后Number类型不是数值(例:‘qwe’字符这种),则转换为NaN。
注:上面的+ 和==比较特殊,在进行+运算时,如果一侧有字符串不会转换为Number,而是进行字符串拼接console.log(1+'1') // 11
==运算符规则(只比对数值,不比对类型,因为会进行隐式转换)
1.undefined == null,结果是true。且它俩与所有其他值比较的结果都是false。 //查询大家解释 ,说是规则是这样。是规定
2.String == Boolean,需要两个操作数同时转为Number。
3.String/Boolean == Number,需要String/Boolean转为Number。
4.Object == Primitive,通过toPrimitive()方法得到一个返回值和Primitive比较。
5.Object == Object ,则比较左右两边所指向对象的地址是否相同,如 果相同则返回true,如果不同则返回false。
// ==
mdn文档:如何正确判断相等性

toPrimitive():方法说明
mdn文档:toprimitive()方法说明

注:当运算符两侧有一侧是object类型时,javascript会自动调用toPrimitive()方法,并优先调用valueOf()方法,如果得不到期望值则继续调用tostringi()方法。