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
总结 在添加的情况下,如果转换为原始值而没有任何提示的任何操作数突然变为字符串,则第二个操作数也将转换为字符串。在减法的情况下,两个操作数都被转换为数字。
添加回答
举报