js数据类型转换spa
数据类型转换要先说下typeof属性。字符串
typeof属性做用:判断数据类型。string
例如: console.log(typeof "aaa");获得string。console
var b=null;console.log(typeof b); 获得object。class
1.强制转换(主动将数据的类型强制转换为某种类型)object
(1)String(数据) 强转为字符串数据类型
例如数据
var num=null;类型转换
var a=String(num);co
console.log(a); //null
console.log(typeof num); //object
console.log(typeof a); //string
(2)数据.toString(进制) 强转为任意进制的字符串
null和undefined是不能转换的,
toString能够将任何数字转换为任意进制,进制必须大于等于2而且小于等于36,也就是最小是2进制,最大是36进制,由于数字字母0~9+A~F有36个。
例如
var num=10;
var a=num.toString(2);
console.log(a); //1010
console.log(typeof num); //number
console.log(typeof a); //string
(3)数据.toFixed(小数点后几位) 强转为四舍五入保留位数的字符串,可是有精度偏差
例如
var num=10.35;
var a=num.toFixed(1);
console.log(a); //10.3
(4)Number(数据) 强转为数值
NaN(非数值 类型是number)
纯字符---> NaN
纯数字--->数字
部分数字,部分字符--->NaN
布尔值--->数字 true--->1 false--->0
undefined--->NaN
null--->0
例如
var str="你好"; //纯字符 NaN
var str="12"; //纯数字 数字
var str="1a"; //部分数字,部分字符 仍是NaN
var str=""; //0
var str=" "; //0
var num=Number(str);
console.log(num);
(5)parseInt(数据,进制) 强转为整数
能够将指定进制字符串转换为10进制数值,是toString()逆转换。
若是没指定进制,则表示将10进制字符串转换为10进制数值。
纯字符---> NaN
纯数字--->数字
部分数字,部分字符--->经过parseInt转换数值能够从开始转换到字符前为止变成数值,若是第一位是字符,返回NaN
布尔值--->NaN
undefined--->NaN
null--->NaN
例如
var str="你好"; //NaN
var str="20.78";
var num=parseInt(str); //20,若是 第二个没有填值,则表示10进制数值转换为10进制数值
var str="1010";
var num=parseInt(str,2);//10,将2进制字符串转换为10进制数值
var str="16a";//16
var num=parseInt(str);//第二个没有填值,按照10进制转换 16
var str="a16";// NaN
(6)parseFloat(数据,进制); 强转为小数
强转小数和parseInt相似,只不过能够保留小数位
(7)Boolean(数据) 强转为布尔值
"" 0 false,undefined,null,NaN 转换为布尔值都会变成false,除此以外转换都是true。
例如
var a=" ";
console.log(Boolean(a)); //true
var b=3;
var c=3;
console.log(Boolean(b-c)); //false
var str="0a";
console.log(Boolean(str)); //true
2.隐式转换(当数据类型不相同时,作数据的运算,就会自动将两端的数据转换为相同类型而后运算,这是隐式转换,隐式转换听从与 String() Number() Boolean() )
(1)+
字符相加 就是将字符首尾相连,字符合并
例如
var a="a";
var b="b";
console.log(a+b); //ab
若是字符和非字符相加,会自动将非字符隐式转换为字符 String()
例如
var a=6;
var b="a";
console.log(a+b); //6a,这里将a隐式转换为字符串,而且相加首尾相连
非字符相加,按照隐式转换为数值,进行数值算术运算相加
var a=6;
var b=true;
console.log(a+b); //7
(2)- * / %
- * / % 都是隐式转换为数值运算 无论有没有字符
例如
var a=6;
var b="a";
console.log(a-b);//减法会隐式转换将a和b都转换为数值 6-NaN 获得NaN。