js数据类型转换
ghj_Vin 人气:2js数据类型转换
数据类型转换要先说下typeof属性。
typeof属性作用:判断数据类型。
例如: console.log(typeof "aaa");得到string。
var b=null;console.log(typeof b); 得到object。
1.强制转换(主动将数据的类型强制转换为某种类型)
(1)String(数据) 强转为字符串
例如
var num=null;
var a=String(num);
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。
加载全部内容