正常来说,如果两个不同类型的数据相加就会报错。
但是在JavaScript中会有自动类型转换,这种转换只会发生在弱类型语句中。
不用给定变量类型,可以随意改变值的类型,所以我们就需要考虑变量是什么类型,才能操作
var a="1";
var b=3;
console.log(b+a);//转换为string类型
console.log(b-a);//转换为Number类型
var c=10;
c="a";
强制转换
主动的将数据的类型强制转换为某种类型
1、String(数据):强制转换为字符串
tips:可以转换null和underfined类型
var a=String(10); var num=10; var a=String(num);
2、toString()强制转换为字符串
使用方法:数据.toString()
tips:1)不可以转换null和underfined;
2)toString(数字)可以将任何数字转换为任意进制,toString转换进制的范围在大于等于2小于等于36之间(0——9+26个字母)
var num=10;
var a=num.toString(a);
var clolo=255;
var c=color.toString(16);
console.log(c);
3、toFixed(小数点后几位):将数值转换为字符串,并且按照小数点四舍五入保留位数;根据前后的数据确定是不是四舍五入还是五舍六入。会有精度误差(任何数据都要转换成二进制,但是原生js二进制小数转换以后恢复到数值时,是有误差的)
var a = 12.256; console.log(a.toFixed(2)) ;
4、强转数值Number()
1)NaN --------->非数值 类型是number
2)纯字符 ------>-NaN
3)纯数字 ------>数字
4)部分数字,部分字符 ------>NaN
5)
true----1;false----0;
6)undefined ----->NaN
7)null ------>0
5、强转整数praseInt()
praseInt(字符,进制)可以将指定进制方式字符串转换为10进制数值,是toString()的逆转换
1)纯字符------NaN
2)纯数字------数字
3)部分数字,部分字符----通过praseInt()转换数值可以从开始转换到字符前为止变成数值,如果第一位是字符,返回NaN
4)布尔值强转数值整型,会变成NaN
5)underfined-----NaN
6)null-----NaN
6、强转小数praseFloat()
tips:注意""里面没有空格
隐式转换
当数据类型不相同时,做数据的运算,就会自动将两端的数据转换为相同类型然后运算,这是隐式转换,隐式转换遵从于String() Number() Boolean();隐式转换效率很低
var a=6; var b="a"; var c=true; console.log(a+b);//这里会将a隐式转换为字符串,并且相加首尾相连 console.log(a+c);//7 console.log(a-b);//减法会隐式转换将a和b都转换为数值 NaN
tips:- * / %都是隐式转换为数值运算,不管有没有字符