JavaScript 中字符串的减号 (-) 运算符?

lim*_*ver 1 javascript operators

我在参加JavaScript 测验时发现了这个问题 -

"1" - - "1";
Run Code Online (Sandbox Code Playgroud)

The result of this statement is 2

谁能解释一下这是怎么回事?

我还发现,偶数-会发生字符串加法,但会发生奇数-减法。仅当数字是字符串时才会发生这种情况。

这里还有一些例子 -

"1" - "1" => 0
"1" - - "1" => 2
"1" - - - "1" => 0
"1" - - - - "1" => 2
"a" - "b" => NaN
Run Code Online (Sandbox Code Playgroud)

Opt*_*nal 6

根据 ECMA 脚本规范

\n\n
\n

12.8.4 减法运算符(\xe2\x80\x90)

\n
\n\n

5。设 lnum 为ToNumber(lval)

\n\n

6。设 rnum 为ToNumber(rval)

\n\n

7lnum返回对and进行减法运算的结果rnum

\n\n

这意味着什么\n如果进行减法,两个操作数都会转换为数字。

\n\n

所以“1”-“1”实际上意味着ToNumber("1")- ToNumber("1")但是在 + 中,因为它是“重载”(java 人会这样称呼它),所以它会变成“字符串情况下的串联”。

\n