数据类型
- 原始数据类型
Boolean String Number Symbol Null Undefined - 对象
Object
显式类型转换
-
String 函数
- 原始类型转换
数值:转换为相应的字符串
字符串:转换后还是原来的值
布尔值:转换后为'true'或者'false'
undefined: 转换后为'undefined'
null: 转换后为'null' - 对象类型转换
先调用toString方法,如果toString方法返回的是原始类型的值,则调用String函数,不在继续。
如果toString返回的是复合类型的值,则调用valueOf方法,返回的是原始类型的值则调用String函数,不在继续。
如果valueOf返回的是复合类型的值,则报错。
- 原始类型转换
-
Number 函数
- 原始类型转换
数值:转换后还是原来的值
字符串:如果能够转换则转换为对应的数值,不能则转换为NaN,空字符串转换为0.
布尔值:true为1,false为0
undefined: 转换为NaN
null:转换为0 - 对象类型转换
先调用对象自身的valueOf方法,如果返回的是原始类型,则调用Number函数对原始类型进行转化。
如果valueOf返回的是复合类型的值,再调用自身的toString方法,如果toString返回的是原始类型的值,则调用Number函数转化。
如果toString 返回的是复合类型的值,则报错
{a: 1}.valueOf() === {a: 1}
{a: 1}.toString() === '[object Object]'
所以{a: 1}调用Number函数最终结果为NaN
- 原始类型转换
-
Boolean 函数
- 原始类型转换
undefined、null、+0、-0、NaN、'' -> false
其他的都返回true
- 原始类型转换
隐式类型转换
四则运算 + - * /
等
判断语句
Native调用 比如console.log会将变量转换为字符串
typeOf类型转换
undefined -> 'undefined'
Null => 'null'
Boolean -> 'boolean'
Number -> 'number'
String -> 'string'
Symbol -> 'symbol'
Host Object -> implamentation-dependent
Function Object -> 'function'
Any Other Obejct -> 'object'
常见题目
-
[] + []
-
[] + {}
-
{} + []
-
{} + {}
-
true + true
-
1 + {a: 1}
文章评论