我错误地写道:
++number++;
得到了这个:
Uncaught ReferenceError: Invalid left-hand side expression in prefix operation
为什么呢?除了这个之外,我首先将number
递增1,然后再将number
递增一次。
答案 0 :(得分:6)
在JavaScript中,++
既是前缀又是 postfix 增量运算符。 postfix 运算符具有更高的优先级,因此当我们应用优先级时,您的表达式变为:
++(number++);
number++
的结果是一个值,而不是一个变量引用,因此它不能是前缀增量运算符的操作数,因为++42
无效的原因相同 - 没有地方可以写结果回到了。
为什么在操作员的右时将其称为“左侧表达式”?您必须查看V8源代码(我可以从V8上的错误文本中看出,可能是Chrome)。我可以推测这是因为许多运算符接受两个操作数(左和右),并且它们默认只调用++
“左手”这样的一元运算符的唯一操作数。但这是猜测。