它的JavaScript输出“1” - - “1”是2怎么样?

时间:2017-09-14 08:31:42

标签: javascript

JavaScript:"1" - - "1"在输出中给我们2,而如果我写得像"1"--"1"那样

  

未捕获的ReferenceError:后缀操作中的左侧表达式无效

工作的那个,即"1" - - "1"

console.log("1" - - "1")

不起作用的那个,即"1"--"1"

console.log("1"--"1");

对我来说这完全是奇怪的。

4 个答案:

答案 0 :(得分:9)

-运算符将字符串"1"强制转换为数字。

因此,"1" - - "1"相当于:

1 - (-1)

所以:2!

然而,"1"--"1"会失败,因为运算符--只需要一个操作数。 "1"--"1"只是没有意义。在第一种情况下,-项之间有一个额外的空间 - 这使得它们成为两个不同的运算符。

答案 1 :(得分:6)

当两个-符号连接在一起时,它们形成unary -- operator。该运算符需要一个变量来执行操作,并且由于"1"不是变量,因此会出错。

当两个-分开时,两个中的第一个是subtraction operator,第二个是unary negation。这是有效的语法并产生2.

答案 2 :(得分:1)

--- -不一样。

--Postfix Decrement Operatorfoo--表示"获取变量foo的值,从中减去1,将其分配回foo。字符串文字不是变量,因此当您尝试"a string"--时会导致错误。

-可以是Unary - OperatorSubtraction Operator,具体取决于具体情况。

如果是"1" - - "1",则每个都有一个。

第二个-是一元运算符,并将"1"向右转换为-1。另一个是减法运算符。

如果你减去"否定的一个"来自"一个"你得到了"两个"。

答案 3 :(得分:0)

这里的简单代数和Javascript类型逻辑......

所以代数部分:

语句评估为1-(-1) 2

就像你有1美元,你把你拥有的1美元减去朋友。这给你2美元,因为你不必给他美元回来(从技术上讲,你不会真的得到另一美元)。

Javascript部分:

这是有效的,因为如果它们是数字,Javascript可以计算字符串。因此,Javascript可以将"1"转换为1