数据类型转换
1.转换成字符串类型
(1)toString()
((a))转换时不会影响到原变量的数据类型
var num1 = 123;
var str11 = num1.toString();
document.write(typeof num1 + '<br>'); //num1仍旧是Number类型,toString()不会影响到原变量
document.write(typeof str11 + '<br>'); //str11此时是String类型
((b))可以携带一个参数,输出对应进制的值
var num1 = 123; //默认10进制
var str12 = num1.toString(2); //转成2进制
document.write(str12 + '<br>');
//123转换为2进制为1111011,所以str12输出为1111011
((c))null和undefined没有toString()
方法,调用则报错
var str4 = null, str5 = undefined;
var str13 = str5.toString()
console.log(str13);//在控制台报错
(2)String()
null和undefined可以用,其他的也可以用。
var str5 = undefined;
var str13 = String(str5)
document.write(typeof str13 + '<br>');
(3)拼接字符串方式
任何数据和 + ""
连接到一起都会转化成字符串,原理和String()
一样
var n1 = 100;
var str21 = n1 + "";
document.write(typeof str21);
//输出为55,相当于字符串的连接
document.write('5' + 5 + '<br>'); //String类型
2.转换成Number类型
(1)字符串转数字
((1))如果是纯数字的字符串直接转换成数字
var str1 = '1001';
var num1 = Number(str1);
document.write(typeof num1);//Number类型
((2))如果字符串为空或者是一个全为空格的字符串,则转换为0
var str2 = "";
var num1 = Number(str2);
document.write(num1);//Number类型,输出为0
((3))只要字符串中有非数字的内容,则转换成NaN
var str2 = "15556it";
var num1 = Number(str2);
document.write(num1);//Number类型,输出为NaN
(2)布尔转数字
true转成1,false转成0
var a1 = true, b1 = false ;
a2 = Number(a1) ,b2 = Number(b1);
document.write(a2 + '<br>'); //输出为1
document.write(b2 + '<br>'); //输出为0
(3)null和undefined转数字
null转为0,undefined转成NaN
var a1 = null, b1 = undefined ;
a2 = Number(a1) ,b2 = Number(b1);
document.write(a2 + '<br>'); //输出为0
document.write(b2 + '<br>'); //输出为NaN
(4)parselnt()
和parseFloat()
函数
当字符串中含有非数字内容时,可以提取字符串中的有效整数和浮点数
parselnt()
((1.))有两个参数,第一个参数是要进行转换的字符串,第二个参数是要进行转换的进制
((2.))从第一位有效数字开始,直到遇到无效数字为止
var a1 = "1000jjj";
a2 = parseInt(a1);
document.write(a2 + '<br>'); //输出为1000
((3.))如果第一位不是有效数字,则直接返回NaN
var a1 = "j1223";
a2 = parseInt(a1);
document.write(a2 + '<br>'); //输出为NaN
((4.))只能转换成整数
var a1 = "12.3kkk";
a2 = parseInt(a1);
document.write(a2 + '<br>'); //输出为12
parseFloat()
((1.))不支持第二个参数,只能解析十进制数
((2.))从第一位有效数字开始,直到遇到无效数字为止
((3.))如果第一位不是有效数字,则直接返回NaN
((4.))可以转换小数
var b1 = "10.5mmm";
var b2 = parseFloat(b1);
document.write(b2 + '<br>'); //输出为10.5
注意:对非string使用parselnt()
和parseFloat()
,会先将它准换成string类型,再准换成数字类型,空串、空格串、布尔、null、undefined都会转化成NaN
var a1 = " ";
a2 = parseInt(a1);
document.write(a2 + '<br>'); //输出为NaN
var b1 = "";
var b2 = parseFloat(b1);
document.write(b2 + '<br>'); //输出为NaN
+和-0运算符
+str1
添加+号,不会改变数据的正负性,相当于使用了Number()函数;
-str1
添加-号,会改变数据的正负性,同时又相当于使用了Number()函数;
str1 - 0
添加- 0
,不会改变数据的正负性,相当于使用了Number()函数
var str = '10.1';
var num1 = +str; //+相当于使用了Number()函数
document.write( num1 +'<br>');//Number类型,输出10.1
var str1 = '10.1';
document.write(+str1 + '<br>'); //输出为10.1
document.write(-str1 + '<br>'); //输出为-10.1
document.write(str1 - 0 + '<br>'); //输出为10.1
3.转换成布尔类型
Boolean(),0、空字符串、null、undefined、NaN会转成false,其他都会转成true
document.write(Boolean(1) + '<br>'); //输出为true document.write(Boolean(" ") + '<br>'); //空格串输出为true
document.write(Boolean("") + '<br>'); //输出为false
document.write(Boolean(null) + '<br>'); //输出为false
document.write(Boolean(undefined) + '<br>'); //输出为false
document.write(Boolean(NaN) + '<br>'); //输出为false
题
document.write(true + true + '<br>'); //输出为2
document.write(false + false + '<br>'); //输出为0