跳到主要内容

加号

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 调用它