主动将数据的类型强制转换为某种类型
1.强转字符串
String(数据) 能够将任何类型的值转换为字符串。
var num=null;
var a=String(num);
console.log(a);---->null
console.log(typeof num);---->object
console.log(typeof a);---->string
数据.toString(进制) 强制转换为字符串 null和undefined是不能转换的
toString可以将任何数字转换为任意进制,进制必须大于等于2并且小于等于36
也就是最小是2进制,最大是36进制,因为数字字母就36个
var num=10;
var a=num.toString(2);
console.log(a);---->1010
console.log(typeof num);---->number
console.log(typeof a);---->string
toFixed(小数点后几位)
将数值转换为字符串,并且按照小数点四舍五入保留位数,但是有精度误差
var num=10.35;
var a=num.toFixed(1);
console.log(a);
注意:任何数据都需要转换为二进制,但是原生js二进制小数转换以后恢复到数值时,是有误差的
例如:
var num=0.5-0.2;
console.log(num==0.3);---->true
console.log(0.3-0.2==0.1);---->false
2.强转数值
Number(数据)
NaN 非数值 类型是number
var str="你好";---->纯字符 NaN
var str="12";---->纯数字 数字
var str="1a";--->部分数字,部分字符 还是NaN
布尔值--->数字 true--->1 false--->0
eg var b=false;
var num=Number(b);
console.log(num);
undefined--->NaN
null--->0
3.强转为整数 (将字符串转化为整型)
parseInt(字符,进制) 可以将指定进制方式字符串转换为10进制数值,是toString()逆转换
纯字符---> NaN
var str="你好";
var num=parseInt(str);
console.log(num);---->NaN
纯数字---> 数字
部分数字,部分字符---> 通过parseInt转换数值可以从开始转换到字符前为止变成数值,如果第一位是字符,返回NaN
eg var str="16a"; 16
var num=Number(str);
var str="a16"; NaN
布尔值强转数值整型,会变成NaN
undefined--->NaN
null--->NaN
var num=parseInt(str);如果第二个没有填值,则表示10进制数值转换
eg:
var str="1010"; 纯数字--->整数
var num=parseInt(str,2);//将2进制字符串转换为数值
console.log(num);---->num:10
var num=16711680(红色)
document.documentElement.style.backgroundColor="#"+(num.toString(16))
4.强转为小数
parseFloat(); 强转小数和parseInt类似,只不过可以保留小数位
5.转换为布尔值
Boolean(数据),将一个值转换为其对应的Boolean值。
"" 0 false,undefined,null,NaN 转换为布尔值都会变成false,除此之外转换都是true
隐式转换
var a="1";
var b=3;
console.log(b+a);----->13(黑色字符型)
console.log(b-a);----->2(蓝色数值型)
如果正常来说 两个不同类型的数据相加就会报错,但是现在没有报错,这种情况只可能发生再弱类型语句中,类型不相同,弱类型语言会自动将数据转换为对应的类型
隐式转换:当数据类型不相同时,做数据的运算,就会自动将两端的数据转换为相同类型然后运算
隐式转换遵从与 String() Number() Boolean()