JavaScript 中字符串的减号 (-) 运算符?
Minus (-) operator on strings in 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
表达式等同于"1" - (-"1")
。一元减号会将其参数 ("1"
) 转换为数字 (1
) 并取其倒数 (-1
)。二进制减法会将其参数("1"
和 -1
)转换为数字(1
和 -1
)并计算它们的差值(2
)。
根据 ecma 脚本 spec :
12.8.4 The Subtraction Operator ( ‐ )
5
。令 lnum 为 ToNumber(lval)
。
6
。令 rnum 为 ToNumber(rval)
。
7
。 Return 对 lnum
和 rnum
应用减法运算的结果
什么意思
在减法的情况下,两个操作数都转换为数字。
所以“1”-“1”实际上意味着 ToNumber("1")- ToNumber("1")
但在 + 中,因为它是 "overloaded"(java 人会这样称呼它),所以它转到“串联字符串大小写。
我正在学习 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
表达式等同于"1" - (-"1")
。一元减号会将其参数 ("1"
) 转换为数字 (1
) 并取其倒数 (-1
)。二进制减法会将其参数("1"
和 -1
)转换为数字(1
和 -1
)并计算它们的差值(2
)。
根据 ecma 脚本 spec :
12.8.4 The Subtraction Operator ( ‐ )
5
。令 lnum 为 ToNumber(lval)
。
6
。令 rnum 为 ToNumber(rval)
。
7
。 Return 对 lnum
和 rnum
什么意思 在减法的情况下,两个操作数都转换为数字。
所以“1”-“1”实际上意味着 ToNumber("1")- ToNumber("1")
但在 + 中,因为它是 "overloaded"(java 人会这样称呼它),所以它转到“串联字符串大小写。