通过前缀和后缀运算符增加数字

gsa*_*ras 3 javascript compiler-errors operators prefix-operator postfix-operator

我错了,写道:

++number++;
Run Code Online (Sandbox Code Playgroud)

得到了这个:

Uncaught ReferenceError: Invalid left-hand side expression in prefix operation
Run Code Online (Sandbox Code Playgroud)

为什么?除了这个之外,我要先加number1然后再加number1.

T.J*_*der 6

在JavaScript中,++前缀后缀增量运算符.该后缀经营者有更高的优先级,所以当我们应用的优先级,你的表达变成:

++(number++);
Run Code Online (Sandbox Code Playgroud)

结果number++是一个值,而不是一个变量引用,因此它不能是前缀增量运算符的操作数,因为同样的原因++42是无效的 - 没有地方可以将结果写回.


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