数据类型转换

类型转换

JS没有严格的类型

数据类型

原始类型

Boolean Null Undefined Number String Symbol

对象

Object

显式类型转换

Number函数

原始类型转换

数值 转换后还是原来的值

字符串 如果可以被解析为数值,则转换为相应的数值,否则为NaN,空字符串为0

布尔值 true为1,false为0

undefined NaN

null 0

对象类型转换

先调用对象自身的valueOf方法若返回原始类型的值(数值、字符串、布尔),则使用Number方法,不再进行后续步骤

若返回复合类型,调用自身toString方法,若范围原始类型, 使用Number

若toString返回复合类型 报错

String函数

原始类型转换

数值 转为相应的字符串

字符串 转换为原来的值

布尔 true为’true’ false为’false’

null ‘null’

对象类型转换

先调用toString方法,如果toString方法返回原始类型的值,对该值使用String方法,不再进行以下步骤

如果返回复合类型,调用valueOf方法,如果valueOf返回原始类型的值,对该值使用Sring方法,不再进行以下步骤

如果valueOf返回复合类型,报错

Boolean函数

undifined null -0 +0 NaN ‘’ : false

隐式类型转换

四则运算

判断语句

Native调用

常见题目

[]+[]

[]+{}

{}+[]

{}+{}

true+true

1+{a:1}

chrome与firefox解释器不一样