类型转换
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解释器不一样