关于
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的值.
您正在尝试递增(),increment/decrement运算符可以应用于变量,请尝试示例代码
(p++) + 1
Run Code Online (Sandbox Code Playgroud)
要么
(++p) + 1
Run Code Online (Sandbox Code Playgroud)