这个添加(+
)运算符生成数字操作数之和或字符串串联。
这个+
运算符被重载,用于两种不同的操作:数值加法和字符串串联。评估时,首先将两个操作数强制为基元然后,测试两个操作数的类型:
字符串串联通常被认为与模板文字或String.prototype.concat()
,但他们不是。加法将表达式强制为原始的,它调用值()
优先;另一方面,模板文字和concat()
将表达式强制为一串,它调用toString()
优先考虑。如果表达式具有[Symbol.to Primitive]()
方法,字符串串联使用“默认”
作为提示,而模板文字使用“字符串”
。这对于具有不同字符串和基元表示形式的对象很重要,例如世俗的,谁的值()
方法抛出。
const t=时间。Now.instant();“”+t;//引发TypeError`${t}`;//'2022-07-31T04:48:56.113918308Z’“”.concat(t);//'2022-07-31T04:48:56.113918308Z’
建议您不要使用“”+x
执行字符串强制.
不能另外混合使用BigInt和number操作数。
1n+2;//TypeError:无法混合BigInt和其他类型,请使用显式转换2+1n;//TypeError:无法混合BigInt和其他类型,请使用显式转换“1”+2n;//TypeError:无法混合BigInt和其他类型,请使用显式转换
要对BigInt和非BigInt进行加法运算,请转换任一操作数:
1n+BigInt(2);//3个数字(1n)+2;//三
如果其中一个操作数是字符串,则另一个操作数将转换为字符串,并将其串联:
“foo”+“bar”;//“foobar”5+“foo”;//“5foo”“foo”+false;//“foofalse”"2" + 2; // "22"
BCD表仅在浏览器中加载