3 回答
TA贡献1844条经验 获得超8个赞
它可以表示“连接” 或 “添加”。由于一边是一个字符串,它被认为是“连接”,因此结果是11(顺便说一下,这是我小时候最喜欢的笑话之一。那和“1 + 1 =窗口”,如同视觉上示出:│┼│ ニ ⊞)
-但是只有一个含义:减去。所以它减去了。
这种问题在其他语言中并不存在,例如PHP,其中“连接” .代替+,不会产生歧义。像MySQL这样的其他语言甚至没有连接运算符,而是使用CONCAT(a,b,c...)。
TA贡献1804条经验 获得超8个赞
因为规范明确告诉这样做。第75页。注意11.6.1步骤5-8和11.6.2步骤5-7之间的区别。
11.6.1 - 描述加法运算符的工作原理
1-4。...
5。设lprim为ToPrimitive(lval)。
6。设rprim为ToPrimitive(rval)。
7。如果Type(lprim)是String或Type(rprim)是String,那么
7a。返回串联ToString(lprim)后跟ToString(rprim)的结果的字符串
8。将添加操作的结果返回到ToNumber(lprim)和ToNumber(rprim)
11.6.2 - 描述减法运算符的工作原理
1-4。...
5。让lnum为ToNumber(lval)。
6。设rnum为ToNumber(rval)。
7。将减法运算的结果返回到lnum和rnum
总结 在添加的情况下,如果转换为原始值而没有任何提示的任何操作数突然变为字符串,则第二个操作数也将转换为字符串。在减法的情况下,两个操作数都被转换为数字。
添加回答
举报
