Javascript:为什么不(p + 1)++工作?

Ash*_*man 3 javascript

关于

p = 0;
(p+1)++;
> ReferenceError: Invalid left-hand side expression in postfix operation
Run Code Online (Sandbox Code Playgroud)

p = 0;
++(p+4);
> ReferenceError: Invalid left-hand side expression in prefix operation
Run Code Online (Sandbox Code Playgroud)

我只是有点意外,因为我期望postfix/prefix运算符可以处理表达式的分辨率(括号具有最高的运算符优先级).

有人可以给我一两行来解释这里发生的事情吗?

谢谢

编辑:感谢您的快速回复,第一个答案标记为答案.我觉得我也应该下面的@thefourtheye那里得到深刻的回答

Dav*_*ani 10

++递增变量的值,因此它比以前更大.例如:

var x = 3;
x++;
alert(x); // will show 4
Run Code Online (Sandbox Code Playgroud)

对于这一点,左边的表达式++必须是可访问和可变的,否则增量是可能的.例如:

3++
Run Code Online (Sandbox Code Playgroud)

没有任何意义,因为3是一个常数,不能递增.我们不希望这是可能的:

3++;
alert(3); // outputs 4???
Run Code Online (Sandbox Code Playgroud)

这就是你的表达不起作用的原因.即:

var p = 2;
(p + 1)++;
Run Code Online (Sandbox Code Playgroud)

有与上面相同的问题.(p + 1)将评估为3,并且++不能更改常量3的值.


Gir*_*ish 6

您正在尝试递增(),increment/decrement运算符可以应用于变量,请尝试示例代码

(p++) + 1
Run Code Online (Sandbox Code Playgroud)

要么

(++p) + 1
Run Code Online (Sandbox Code Playgroud)