这在逻辑上似乎很明显(字符串不能减去)但我想知道如何在JavaScript的底层执行中做出这个决定。在这里如何应用强制规则?
答案 0 :(得分:11)
-
is defined in terms of ToNumber
,而+
有一个额外的clause for strings(强调我的):
11.6.1加法运算符(
+
)加法运算符执行字符串连接或数字 此外。
制作
AdditiveExpression : AdditiveExpression + MultiplicativeExpression
评估如下:
- 让
的结果lref
成为评估AdditiveExpression
。- 让
lval
成为GetValue(lref)
。- 让
的结果rref
成为评估MultiplicativeExpression
。- 让
rval
成为GetValue(rref)
。- 让
lprim
成为ToPrimitive(lval)
。- 让
rprim
成为ToPrimitive(rval)
。- 如果
醇>Type(lprim)
为String
或Type(rprim)
为String
,则 强>的
- 返回串联
的结果字符串ToString(lprim)
后跟ToString(rprim)
[...]