JS中只有三种类型转换,分别是:转换成数字,转换成字符串,转换成布尔值。
转换成数字
基本类型的值转换底层是通过调用
Number()方法来转换的;引用类型的值是先调用toString()方法,先转换成字符串,然后再调用Number()。 几种特殊情况
- 字符串转数字:空串或者空格为
0,数字字符串为数字; - null转换为数字是
0; - 数组转换成数字:空数组是
0,一个子项且值为数字或数字字符串的转换结果是对应数字; - 布尔类型true是
1,false是0; - Symbel类型是直接报错。
除了上面几种特殊情况,其他转换结果都是
NaN。undefined 转换结果也是NaN。除了数组的几种特殊情况,其他引用类型转换都是NaN。因为第一步先转换成字符串的结果都是'[object Object]'。
转换成字符串
- 基本类型转换结果都是对应值外面包一个
''; - 引用类型
- 数组直接去掉
[]; - 对象则都是转换成
'[object Object]'。
- 数组直接去掉
转换成布尔值
除了
0,'',null,undefined,NaN这五个值转换结果是false,其他结果都是true。