加号
2024年03月11日
一、认识
加法(+
)运算符计算数字操作数或字符串连接的总和
二、语法
x + y
三、规则
加法运算符(+
)为两种不同的运算重载: 数字加法和字符串连接。在求值时,它首先将两个操作数强制转换为基本类型。然后,检查两个操作数的类型:
-
如果有一方是字符串,另一方则会被转换为字符串,并且它们连接起来。
-
如果双方都是
BigInt
,则执行BigInt
加法。如果一方是BigInt
而另一方不是,会抛出TypeError
。 -
否则,双方都会被转换为数字,执行数字加法。
四、问题
4.1 + 字符串
、模版字符串、String.prototype.concat()
的区别?
-
+ 字符串
: 加法强制将表达式转为基本类型,它优先调用valueOf()
, 如果表达式有@@toPrimitive
方法,字符串连接时会用default
作为hint
调用它 -
模版字符串: 强制将表达式转为字符串,优先调用
toString()
,如果表达式有@@toPrimitive
方法,模板字符串会用string
作为hint
调用它 -
String.prototype.concat()
: 强制将表达式转为字符串,优先调用toString()
,如果表达式有@@toPrimitive
方法,模板字符串会用string
作为hint
调用它