3

错误地,我写道:

++number++;

得到了这个:

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

为什么?除了这个,我会先增加number一,然后再增加number一。

4

1 回答 1

8

在 JavaScript 中,++既是前缀又是后缀自增运算符。后缀运算符具有更高的优先级,因此当我们应用优先级时,您的表达式变为:

++(number++);

的结果number++是一个值,而不是变量引用,因此它不能是前缀自增运算符的操作数,同样的原因++42是无效的——结果无处可写。


当它在运算符的右侧时,为什么将其称为“左侧表达式” ?您必须查看 V8 源代码(我可以从错误文本中看出您在 V8 上执行此操作,可能是 Chrome)。我可以推测这是因为许多运算符接受两个操作数(左和右),并且默认情况下它们只是将唯一的操作数调用给一元运算符,如++“左手”。但那是猜测。

于 2015-09-26T09:56:45.320 回答