加法(+)

这个添加(+)运算符生成数字操作数之和或字符串串联。

试试看

语法

js公司
x+y

描述

这个+运算符被重载,用于两种不同的操作:数值加法和字符串串联。评估时,首先将两个操作数强制为基元然后,测试两个操作数的类型:

字符串串联通常被认为与模板文字String.prototype.concat(),但他们不是。加法将表达式强制为原始的,它调用值()优先;另一方面,模板文字和concat()将表达式强制为一串,它调用toString()优先考虑。如果表达式具有[Symbol.to Primitive]()方法,字符串串联使用“默认”作为提示,而模板文字使用“字符串”。这对于具有不同字符串和基元表示形式的对象很重要,例如世俗的,谁的值()方法抛出。

js公司
const t=时间。Now.instant();“”+t;//引发TypeError`${t}`;//'2022-07-31T04:48:56.113918308Z’“”.concat(t);//'2022-07-31T04:48:56.113918308Z’

建议您不要使用“”+x执行字符串强制.

示例

使用数字进行加法

js公司
1 + 2; // 

其他非字符串、非BigInt值被强制为数字:

js公司
真+1;//2假+假;//0

使用BigInts添加

js公司
1n+2n;//3个

不能另外混合使用BigInt和number操作数。

js公司
1n+2;//TypeError:无法混合BigInt和其他类型,请使用显式转换2+1n;//TypeError:无法混合BigInt和其他类型,请使用显式转换“1”+2n;//TypeError:无法混合BigInt和其他类型,请使用显式转换

要对BigInt和非BigInt进行加法运算,请转换任一操作数:

js公司
1n+BigInt(2);//3个数字(1n)+2;//

使用字符串进行加法

如果其中一个操作数是字符串,则另一个操作数将转换为字符串,并将其串联:

js公司
“foo”+“bar”;//“foobar”5+“foo”;//“5foo”“foo”+false;//“foofalse”"2" + 2; // "22"

规格

规范
ECMAScript语言规范
#sec-addition-运算符-plus

浏览器兼容性

BCD表仅在浏览器中加载

另请参见