js的数据类型大体可以分为:字符串(String)、数字(Number)、布尔(Boolean)、对象(Object)、Null、Undefined、typeof操作符。
而数据类型转换可以分为强转数值、隐式转换。
强转数值:主动将数据的类型强制转换为某种类型
如:
String(); 强制转换为字符串
var num=null;
var a=String(num);
console.log(a);//--->null
console.log(typeof num);//---->object
console.log(typeof a); //----->string
var num=10;
var a=num.toString(2);
console.log(a);//----->1010
console.log(typeof num);//----->number
console.log(typeof a);// ----->string
toString可以将任何数字转换为任意进制
var color=255;
var c=color.toString(16);
console.log(c);//--->ff
toFixed(小数点后几位) 将数值转换为字符串,并且按照小数点四舍五入保留位数,但是有精度误差
var num=10.35;
var a=num.toFixed(1);
console.log(a);----->10.3
强转数值
NaN 非数值 类型是number
var str="你好";//纯字符 NaN
var str="12";//纯数字 数字
var str="1a";//部分数字,部分字符 还是NaN
var num=Number(str);
console.log(num);//--->NaN
var b=false;
// 布尔值
var num=Number(b);
console.log(num);//---->0
var a;
var a=null;
var num=Number(a); //undefined--->NaN null--->0
console.log(num);//---->0
强转为整数
var str="你好";//纯字符---》NaN
var str="20";
var num=parseInt(str);//如果 第二个没有填值,则表示10进制数值转换
num :20
var str="1010";//纯数字---》整数
var num=parseInt(str,2);//将2进制字符串转换为数值
num :10
parseInt(字符,进制) 可以将指定进制方式字符串转换为10进制数值,是toString()逆转换
var str="FF";
var num=parseInt(str,16);//将16进制字符串转换为数值
console.log(num);//---->255
//#FF0000
var str="FF0000";
var num=parseInt(str,16);
console.log(num); //----->16711680
var str="1010101";
var num=parseInt(str,2);
console.log(num); //----->85
var str="FF";
var num=parseInt(str,16);
console.log(num); //---->255
转换为布尔值:Boolean(数据) 转换为布尔值。
"" 0 false,undefined,null,NaN 转换为布尔值都会变成false,除此之外转换都是true
var str="aaa";
var b=Boolean(str);
console.log(b);//---->true
隐式转换:
在js中,当运算符在运算时,如果两边数据不统一,CPU就无法计算,这时我们编译器会自动将运算符两边的数据做一个数据类型转换,转成一样的数据类型再计算.这种无需程序员手动转换,而由编译器自动转换的方式就称为隐式转换
var a=6;
var b="a";
var c=true;
console.log(a+b);//这里将a隐式转换为字符串,并且相加首尾相连 --->6a
console.log(a+c);//----->7
console.log(a-b);//减法会隐式转换将a和b都转换为数值 NaN 6-NaN