原生js中,有3种基本的数据类型和2种特殊的类型,对于初学者来说,类型之间的隐式转换是一个难题,今天我们就来讲讲js中隐式类型转换的特点。
在js中隐式类型的转换都是发生在变量进行运算的时候,那么隐式类型转换和运算符之间的关系就变的十分密切。
1. 当 运算符是 + 时,只要有一个操作数是字符串,那么就会把另外一个操作数隐式转换为字符串,然后将两个字符串连接起来,组成一个新的字符串,这个我们可以记忆为:字符串的同化作用,字符串遇 + 同化就会起作用
alert( "10"+ true); //10true
alert( "10"+ null); //10null
alert( "10"+ 10); //1010
2. 当运算符是非+时,即 - 、*、 /、 % 这些运算符时,js会默认的将运算符两边的操作数都转换为 数字型,然后进行减乘除的运算 ,这个我们可以记忆为:数字的同化作用,因为只有数字才会有减法,乘法,除法运算
alert("10"-null); //10
alert("10"*true); //10
alert("10"/"2"); //5
alert("10"%"6"); //4
隐式转换错误的时候,一般发生在将其他类型转换为数字时,如果不能转换为数字,则会报NaN错误。
alert("10px"*10); // NaN