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

时间:2017-10-31 02:20:16

标签: javascript

我正在接受this JavaScript Quiz并发现了这个问题 -

"1" - - "1";

The result of this statement is 2

有谁能解释这里发生了什么?

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

以下是一些更多例子 -

"1" - "1" => 0
"1" - - "1" => 2
"1" - - - "1" => 0
"1" - - - - "1" => 2
"a" - "b" => NaN

2 个答案:

答案 0 :(得分:2)

表达式相当于<div id="id1"> <li class="c2">test</li> <li class="c3">test2</li> <li class="c4">test3</li> </div>。一元减号会将其参数("1" - (-"1"))转换为数字("1")并将其反转(1)。二进制减号会将其参数(-1"1")转换为数字(-11)并计算它们的差异(-1)。

答案 1 :(得分:1)

根据ecma脚本spec

  

12.8.4减法运算符( - )

5。让lnum为ToNumber(lval)

6。设rnum为ToNumber(rval)

7。将减法运算的结果返回到lnumrnum

这意味着什么 在减法的情况下,两个操作数都被转换为数字。

所以“1” - “1”实际上意味着ToNumber("1")- ToNumber("1")但是在+中,因为它是“重载”(正如java家伙所称的那样),它会转到“串联情况下的连接。”