JavaScript中字符串的减号(-)运算符?
我在回答这个问题时发现-JavaScript中字符串的减号(-)运算符?,javascript,operators,Javascript,Operators,我在回答这个问题时发现- "1" - - "1"; 此语句的结果是2 有人能解释一下这是怎么回事吗 我还发现,使用偶数-进行字符串的加法,而使用奇数-进行减法。只有当数字是字符串时才会发生这种情况 这里有更多的例子- "1" - "1" => 0 "1" - - "1" => 2 "1" - - - "1" => 0 "1" - - - - "1" => 2 "a" - "b" => NaN 该表达式相当于“1”-(“1”)。一元负号将其参数(“1”)转换为一个
"1" - - "1";
此语句的结果是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
)。这个表达式相当于“1-(“1”)
。一元负号将其参数(“1”
)转换为一个数字(1
),并取其倒数(-1
)。二进制减号将其参数(“1”
和-1
)转换为数字(1
和-1
),并计算它们的差值(2
)。根据ecma脚本:
12.8.4减法运算符(‐)
5
。设lnum为ToNumber(lval)
6
。设rnum为ToNumber(rval)
7
。返回将减法运算应用于lnum
和rnum
这意味着什么
在进行减法运算时,两个操作数都转换为一个数字
所以“1”-“1”实际上意味着ToNumber(“1”)-ToNumber(“1”)
,但在+,因为它是“重载的”(java guy会这样称呼它),所以它变成了“字符串情况下的连接”。根据ecma脚本:
12.8.4减法运算符(‐)
5
。将lnum设为ToNumber(lval)
6
。将rnum设为ToNumber(rval)
7
。将减法运算的结果返回到lnum
和rnum
这意味着什么
在进行减法运算时,两个操作数都转换为一个数字
所以“1”-“1”实际上意味着
ToNumber(“1”)-ToNumber(“1”)
,但在+,因为它是“重载的”(java guy会这样称呼它),所以它变成了“字符串情况下的连接。1--1==1-(-1)==1+1。。。对一个字符串执行-
操作会将该字符串强制为一个数字,这与您的要求无关,但作为一个自然的下一步,您可能会喜欢阅读有关该字符串的内容<代码>+“1”+“1”=>2
,但“1”+“1”
=><11”
.1--1==1-(-1)==1+1。。。对一个字符串执行-
操作会将该字符串强制为一个数字,这与您的要求无关,但作为一个自然的下一步,您可能会喜欢阅读有关该字符串的内容<代码>+“1”+“1”=>2
,但“1”+“1”
=><11”
。