目录
JavaScript中的数据类型转换大致分为2种,一种是自动类型转换,另一种是强制类型转换。自动类型转换就是根据上下环境程序自动类型转换,强制类型转换是指将一个数据类型强制转换为其他的数据类型。类型转换主要指,将其他数据类型转换为:String ,Number, Boolean.
1.转换为string类型
方法一:
- 调用被转换数据类型的toString()方法
- 该方法不会影响原变量,它会将转换的结果返回
var a = 10;
console.log(typeof a); //结果为number
var b = a.toString();
console.log(typeof b); //结果为string
注意:null和undefined这两个值没有toString()方法,如果调用他们的方法会报错。
方法二:
- 调用String()函数,并将被转换的数据作为参数传递给函数
- 使用String()函数做强制类型转换时,对于Number和Boolean实际上就是调用的toString()方法。但是对于null和undefined就不会调用toString()方法,它会将null直接转换为“null”;将undefined直接转换为“undefined”
var a = 12;
console.log(typeof a); //结果为number
var b = string(a);
console.log(typeof b); //结果为string
方法三:
- 直接加一个空字符(理论上没有这种方法)
var a = true;
console.log(typeof a); //结果为boolean
var b = a + '';
console.log(typeof b); //结果为string
2.转换为number类型
方法一:调用number() 函数
//字符串转数字
Number("3.14"); // 返回 3.14
Number(" "); // 返回 0
Number(""); // 返回 0
Number("99 88"); // 返回 NaN
//布尔转数字
Number(false); // 返回 0
Number(true); // 返回 1
//null转数字
Number(null); //返回0
//undefined转数字
Number(undefined); //返回NaN
- 如果是纯数字的字符串,直接转换为数字
- 如果字符串中有非数字的内容 则转换为NaN
- 如果字符串是一个空串或者全是空格的字符串,则转为0
- true转成1,false转成0。Boolean转number通常被说成隐式转换
- null转数字结果为0
- undefined转数字结果为NaN
方法二:parseInt() 把一个字符串转换为一个整数;parseFloat()把一个字符串转换为一个浮点数。(此方法只适用于字符串)
//parseInt()方法
var a = "18.6px";
a = parseInt(a);
console.log(typeof a); //结果为number
console.log(a); //结果为18
//parseFolat()方法
var b = "18.6px";
b = parseFloat(b);
console.log(typeof b); //结果为number
console.log(b); //结果为18.6
- parseInt() 和parseFloat() 方法取内容数值时都从左往右一位一位的读,读到非整数就停止
3.转换为Boolean类型
方法:调用Boolean()函数来将被转换对象转换为布尔值
- 数字转布尔,除了0和NaN,其余都是true
- 字符串转布尔,除了空串,其余都是true
- null和undefined都会转换为false
- 对象也会转换为true
4.其他进制的数字
在js中,表示16进制的数字需要以0x开头;表示8进制的数字需要以0开头;如果要表示2进制的数字则需要以0b开头,但不是所有浏览器都支持。
a = 0x23; //16进制数
b = 070; //8进制数
c = 0b10; //2进制数
d = "070"; //这种字符串有些浏览器会当成8进制解析,有些会当成10进制解析
e = parseInt(a, 10); //可以在perseInt()中传递一个参数,来指定数字的进制
console.log(typeof a);
console.log(a);