Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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/7/rust/4.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 concating_Javascript_String_Syntax_Operators_Concatenation - Fatal编程技术网

以数字作为字符串的JavaScript concating

以数字作为字符串的JavaScript concating,javascript,string,syntax,operators,concatenation,Javascript,String,Syntax,Operators,Concatenation,为什么x=“1”--“1”工作并将x的值设置为2 为什么x=“1”--“1”不起作用 因为--是JavaScript中的运算符 当您在第一个表达式中分隔-字符时,您的意思是明确的。当您将它们放在一起时,JavaScript将它们解释为一个运算符,而下面的“1”则解释为意外字符串。(或者可能是前面的“1”?我真的不确定。)这个表达式 "1"- -"1" 。。。被处理为 "1"- (-"1") 。。。也就是说,将应用于“1”的一元减运算的结果从“1”中减去。现在,一元和二元减号运算只适用于数字,

为什么
x=“1”--“1”
工作并将
x
的值设置为
2

为什么
x=“1”--“1”
不起作用

因为
--
是JavaScript中的运算符

当您在第一个表达式中分隔
-
字符时,您的意思是明确的。当您将它们放在一起时,JavaScript将它们解释为一个运算符,而下面的
“1”
则解释为意外字符串。(或者可能是前面的
“1”
?我真的不确定。)

这个表达式

"1"- -"1"
。。。被处理为

"1"- (-"1")
。。。也就是说,将应用于“1”的一元减运算的结果从“1”中减去。现在,一元和二元减号运算只适用于数字,所以JS首先将其操作数转换为数字。所以这基本上变成:

Number("1") - (-(Number("1"))
。。。这最终将被计算为2,正如您可能期望的那样,计算为
1


当试图理解表达式时,JS解析器试图使用尽可能多的字符。这就是为什么首先处理这个表达式
“1”-

但这毫无意义,因为没有为文字定义自动递增/递减操作。
++
-->
(后缀和前缀形式)都应更改某些可赋值('left-value')表达式的值-变量名、对象属性等

然而,在这种情况下,没有什么可更改的:“1”字面值始终是“1”。)


实际上,我在Firefox中得到了一些不同的错误(对于x=“1”--“1”):

SyntaxError: invalid decrement operand
。。。和铬金丝雀:

ReferenceError: Invalid left-hand side expression in postfix operation
我认为这些信息实际上非常清楚地说明了错误的原因。)

“-1”=-1(一元减号将其转换为int) 所以"1" - (-1) 现在,“+”是串联运算符。不是-。因此JS返回结果2(而不是字符串concat)


此外,“1”--“1”=>此处”--“是减量运算符,语法错误,因为在这种情况下字符串不会自动转换。

因为
--
是减量运算符,不能应用于常量值。

实际上,即使使用“1”--“1”--这始终被视为(“1”--“1”),JS也没有歧义. 所以是的,如果
“1”-
表达式有效,
“1”
应被视为意外字符串。)@raina77ow“1”--“1”对于JavaScript来说是明确的,但我可以用两种不同的方式来解释它。OP的含义以及JavaScript对其的解释方式。