Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/461.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript中字符串的减号(-)运算符?_Javascript_Operators - Fatal编程技术网

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”