在JavaScript中,变量可以赋予任何类型的值,但是运算符对数据类型是有要求的,如果运算符发现数据类型不符合要求,就会自动进行隐式类型转换。除了自动进行的隐式类型转换之外,还可以手动强制转换。

一、转换为数值型

1.字符型转为数值型
1.1 Number()
Number()是隐式类型转换的方法,这种方法字符串中只要含有非数值就会转换为NaN。空字符转换为数值型是0。

console.log(Number("4a"));     //控制台输出NaN
console.log(Number(""));       //0

1.2 parseInt()
parseInt() 方法是将字符型转换为整形数值,从开始位置依次向后转换直到遇到非数值停止,即不识别0-9之外的数字。parseInt(string,radix)可以接收两个参数,分别是待转换的字符和进制,按照后面给定的进制来识别前面的字符并输出一个十进制数。

console.log(parseInt("45.3a6"));     //45     
console.log(parseInt("45.3a6",16)); //两个参数分别为要转换的字符 和进制。
console.log(parseInt("100",2));   //4    
console.log(parseInt("f",16));    //15   按照后面的进制去识别前面的字符,输出的是十进制
数。

1.3parseFloat()
将字符型转换为浮点型,只识别字符串中第一个小数点。不能设置进制。

console.log(parseFloat("4.55.3"));     //4.55

2.布尔型转为数值型
用Number()进行隐式转换,true转换为数值为1,false转为数值为0。

console.log(Number(true));       //1
console.log(Number(false));      //0

3.Undefined,Null转为数值型
用Number()进行隐式转换,Undefined转为数值型是NaN,Null转换为数值型是0。

console.log(Number(undefined));        //NaN
console.log(Number(null));      //0

4.Object,NaN转换为数值型

console.log(Number({a:1,b:2}));       //NaN
console.log(Number(NaN));            //NaN
console.log(Number({}));            //NaN
console.log(Number([]));            //0

二、转换为字符型

1.数值转为字符型
1.1 String()隐式类型转换方法

console.log(String(0.000004));       //输出字符型0.000004
console.log(String(2e+2)); //科学技术法表示的数会先转化为十进制表示的数再转换为字符型

1.2 toString()方法
可以将数值按照指定的进制进行强制转换。

console.log(0xff.toString(2));  //11111111  将0xff表示的十六进制数转换为二进制并输出字符串
console.log(07.toString(2));  //111 将07表示的八进制数转换为二进制并输出字符串

1.3 toFixed()
toFixed()可以接收一个参数,表示保留小数点后的位数,一般情况下是遵循四舍五入,但是!但是当保留位数的后一位时5的时候可能会有误差。

console.log(2.556.toFixed(2));     // 2.56 
console.log(2.55.toFixed(1));     // 2.5

1.4 toPrecision()
接收一位参数,表示保留的数字的位数。并不是科学计数法。

console.log(0.00000556.toPrecision(2));    //0.0000056
var a = 120056;
console.log(a.toPrecision(2));      //输出  1.2e+5

1.5 toExponential()
科学技术法,接收一位参数,表示保留小数点后几位。

console.log(0.00000556.toExponential(2));      //5.56e-6

1.6 toLocaleString()

console.log(0.00000556.toExponential(2));   //输出0

2.布尔值、null、undefined、NaN转换为字符类型
用String()进行隐式转换

console.log(String(false));    //false
console.log(String(true));     //true
console.log(String(NaN));      //NaN
console.log(String(undefined));   //undefined

3. []、对象转换为字符类型

console.log(String([]));       //输出空字符串 ""
console.log(String([1,2,3]));     //输出字符串  1,2,3
console.log(String({b:1}));    //前一个object表示是一个对象,后一个object表示类型。

三、转换为布尔值

Boolean()隐式类型转换方法。
0, NaN, false, “”, undefined, null这六个转为布尔值为false,其他都为true。

console.log(Boolean(" "));     //空格字符串   true
console.log(Boolean([]));      //true
console.log(Boolean({b:1}));   //true

注意:
console.log(![] == []); 输出为true。!的运算符优先级高,需要先把[]转换为布尔值为true,![] 就是false。而[]默认调用toString方法转化为字符串,为"", ""再转为布尔值是false,所以![] == []为true。

console.log(![] == []);    //true

四、其他数据类型无法转换为undefined,null