加号操作符

February 19, 2017

加法操作符的规则:

  1. 如果操作符中有一个是对象,将其转换为原始值
  2. 如果操作数中有一个是字符串,将另一个也转换为字符串,然后连接
  3. 其他情况下,将两个操作数转换为数字并执行加法运算

首先看一下第一条规则,如果操作符中有一个是对象,将其转换为原始值,那么,是如何转换的呢?

  1. 如果对象是 Date 类型的话,使用 toString() 转换为字符串
  2. 其他对象的话会先调用 valueOf(),如果返回的是一个原始值得话,则使用这个原始值,否则进入第三部
  3. 调用 toString() 方法

好了,我们再看几个例子

例子1

var ret = [1, 2, 3] + 4; // '1,2,34'

[1, 2, 3] 是一个对象,因此先调用 valueOf(),但 函数返回的是数组本身,不是一个原始值,因此再调用 toString(),返回字符串'1,2,3'

此时表达式变为 '1,2,3' + 4,此时使用第二条规则,将数字4转化为字符串'4'

此时表达式变为'1,2,3' + '4',结果为1,2,34

例子2

var ret = [] + 1; // '1'

[]转换为字符串''1转换为'1',因此结果为'1'

例子3

var ret = true + 1 // 2

执行第三条规则,true转换为1

# 前端
# JavaScript
知识共享许可协议
本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可。
© 2015 - 2022 zhuscat
Hosted on Vercel