js运算中的隐式转化
什么时候存在隐式转化?
1 进行运算时
2 左右两边操作数不是相同的数据类型
3 操作数中有引用数据类型时
算数运算符
1、当对非number类型的值进行运算时,会先将这些值转换为number然后再运算(除了字符串)。
2、加法运算时,比较特殊,当对两个字符串进行加法运算时,会做拼串,就是将两个字符串拼到一起,并返回。任何值和字符串相加都会先转成字符串再做拼串操作。我们可以利用这个特点来将任意一个数据类型转为string,只需加一个空串即可。
逻辑运算符
1、!运算:对于非布尔值,会先将其转为布尔值再进行运算。
2、&&运算:对于非布尔值,会先将其转为布尔值再进行运算,并返回原值。
3、||运算:对于非布尔值,会先将其转为布尔值再进行运算,并返回原值。
关系运算符
只有数字之间能进行关系的比较。所以非数值进行比较时,会先将其转为数字型的值再比较。但是如果符号两边的值都是字符串时,不会转成数字比较,而是比较字符的Unicode编码值。任何值和NaN作比较都是false。
对象的隐式转化
在默认隐式转化中,所有的对象都转化为[object object]。
所有引用类型的数据需要运算时,只能先转成字符串,再由字符串转为其他类型。