一、强制转换1.其他类型转String

a.toString();生成一个新的字符串,不会改变原来的数据类型。
a.toString(2);转换为二进制的字符串。
a.toString(8);转换为八进制的字符串。
String(a);强制转换为字符串类型;

两者区别:x.toString()不能转换null和undefined,如需转换,需重写toString方法。

window.onload=function(){ var a; var b=null; //console.log(a.toString(),b.toString());//报错 //console.log(String(a),String(b)); function String(x){ if(x===undefined){ return "undefined"; }else if(x===null){ return "null"; }else{ return x.toString(); } }}2.其他类型转Number

Number(b);
true , 00001 ---> 1;
null , "" , [] , [""] , false , " " , [" "] ---> 0;
其他进制 ---> 十进制
undefined , 123abc , "abc" , ["web"] , ["1","2"] --->NaN
["10"] , "10" ---> 10

3.parseInt & parseFloat

parseInt("123abc") , parsFloat("123abc") ---> 123
parseInt("Fd123") , parseFloat("Fd123") ---> NaN
parseInt("0xf") ---> 15
parseFloat("0xf") ---> 0
parseInt(7.5) ---> 7
parseFloat(7.0) --->7

二、隐式转换

1.字符串数字遇到运算符会自动转成Number类型。(+,-,*,%,/,>,<,=)
2.+ 前是字符串的话,后面的Number类型会自动转换为String类型。
3.null , false ,""," " 运算时转为 数值 0;true 计算时转为 数值 1 。
4.undefined ---> NaN