2017-09-14 57 views
-1

的JavaScript:"1" - - "1"给我们2输出,而如果我写这样"1"--"1"越来越JavaScript输出“1” - - “1”是2怎么样?

Uncaught ReferenceError: Invalid left-hand side expression in postfix operation

的作品即"1" - - "1"

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

那并不是一个在一个的t工作,即"1"--"1"

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

这对我来说完全不可思议。

+0

真的不清楚...你能否创建一个片段来重现这一点? – Weedoze

回答

8

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

所以,"1" - - "1"相当于:

1 - (-1) 

所以:2!

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

+2

“如果你有......这将是有效的”:不,这是无效的! – trincot

+0

@trincot更正!谢谢! – Nisarg

6

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

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

0

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

所以代数部分:

的语句评估为1-(-1)这是2

它就像你有1美元,你减去你拥有给朋友的1个金币。这给你2美元,因为你不必给他美元回来(这在技术上,你真的没有再获得美元)。

JavaScript部分:

这工作,因为Javascript可以通过计算字符串如果他们的数字。所以Javascript可以将"1"转换为1

0

--- -是不一样的。

--Postfix Decrement Operatorfoo--的意思是“取变量foo的价值,从中减去1,分配回foo。字符串文字不是一个变量,所以当你尝试"a string"--这将导致错误。

-可以是Unary - Operator或。根据上下文的Subtraction Operator

"1" - - "1"的情况下,你必须每一个

第二-是一元。 - 运营商与"1"转换成其权利-1的行吟诗人r是减法运算符。

如果你从“one”中减去“negative one”,你会得到“two”。

相关问题