字符串和数字之间的隐式强制类型转换:
- 加法:如果能通过
[[toPrimitive]]
转换成字符串的则进行字符串拼接([2,3]
转换成'2,3'
),否则进行数字加法:关于
[[toPrimitive]]
:
会先调用valueOf()
,再通过toString()
抽象操作返回字符串,然而,显示转换String(33)
则是直接执行toString()
操作 - 减法、乘法、除法:为了执行减法运算,所有值都会被先转换为字符串(通过
toString()
),然后再转换为数字
{} + [] 和 {} + [] 结果不相等