基本类型转数字类型
规则如下:
- true——》1
- false——》0
- null——》0
- undefined——》NaN
- string——》1.去掉字符串的引号,如果不是数字返回NaN,如果是数字返回数字,2.若是空字符串,返回0
string转number举例:
Number(' ')//0
Number('11a');//NaN
Number('11');//11
Number('0110');//110,这里前面有0并不会按照八进制方式处理,而是十进制
Number('0o14')//12,可以在0后面添加o达到转成八进制
ES6支持的二,八,十六进制格式:
0b11//3的二进制
0B11
0o14//12的八进制
0O14//这里使用大写的O
0xc//12的十六进制
0Xc
ES6开始的严格模式不支持以0开始的八进制格式,在非严格模式下是支持的。
所有类型转布尔类型
- null——》false
- number——》1、0转成false,2、NaN转成false,3.其他数字都是true
- string——》1、空字符串转成false,2、其他都是true
- 对象类型——》true
- undefined——》false
对象类型转成基本类型
规则:先调用valueOf,如果得到的是对象,继续调用toString,如果返回的还不是对象,报错
例
var obj = {
valueOf: function () {
return 1;
},
toString: function () {
return 3;
},
};
console.log(1 + obj);//2
若注释掉valueOf,保留toString
var obj = {
// valueOf: function () {
// return 1;
// },
toString: function () {
return 3;
},
};
console.log(1 + obj);//4
console.log(obj.valueOf()//{ toString: [Function: toString] }
由于valueOf返回的是一个对象,所以调用toString方法
若toString返回一个对象时,便会报错
var obj = {
// valueOf: function () {
// return 1;
// },
toString: function () {
return {};
},
};
console.log(1 + obj);//报错
基本类型转字符串
- null——》"null"
- undefined——》"undefined"
- number——》加上双引号
- boolean——》加上双引号