Javascript系列——类型转换

JavaScript语言核心的内置类首先尝试使用valueOf(),再尝试使用toString(),除了日期类,日期类只使用toString()转换。那些不是JavaScript语言核心中的对象则通过各自的实现中定义的方法转换为原始值。

Javascript系列——类型转换

==和!=运算符
1)对象转原始值
2)null==undefined
3)true转为1,false转为0
4)若都是字符串,进行字符串比较
5)若一个为数字,一个为字符串,进行数字比较

关系运算符
1)对象转原始值
2)若都是字符串,进行字符串比较
3)若至少有一个不是字符串,则进行数值比较(都转换为数值进行比较)

+运算符
1)对象转原始值
2)若有一个是字符串,则进行字符串连接
3)若没有字符串,则进行加法运算(都转换为数值进行运算)

对象转换为原始值
对象到布尔值的转换非常简单:所有的对象(包括数组和函数)都转换为true。
对象到字符串和对象到数字的转换是通过调用待转换对象的一个方法来完成的。

+和==的场景:
所有非日期类对象到原始值的转换,使用对象向数值转换的模式,先valueOf(),如果没有得到原始值,再toString()
但是日期对象则使用对象到字符串的转换模式,toString()
通过valueOf()或toString()返回的原始值将被直接使用,而不会被强制转换为数字或字符串。

相关推荐