我正在接受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
答案 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"
)转换为数字(-1
和1
)并计算它们的差异(-1
)。
答案 1 :(得分:1)
根据ecma脚本spec:
12.8.4减法运算符( - )
5
。让lnum为ToNumber(lval)
。
6
。设rnum为ToNumber(rval)
。
7
。将减法运算的结果返回到lnum
和rnum
这意味着什么 在减法的情况下,两个操作数都被转换为数字。
所以“1” - “1”实际上意味着ToNumber("1")- ToNumber("1")
但是在+中,因为它是“重载”(正如java家伙所称的那样),它会转到“串联情况下的连接。”