为什么我们不能递增(++)或递减( - )数字文字

时间:2017-03-20 20:06:20

标签: javascript numbers increment literals decrement

例如,在下面的JavaScript代码中,为什么我们在使用变量时不会出错,但是当使用数字文字时,我得到一个错误(在节点v6.9.5上运行)?

let x = 2;
console.log(x++); //2

let y = 2;
console.log(++y); //3

console.log(2++); //ReferenceError: Invalid left-hand side expression in postfix operation
console.log(++2); //ReferenceError: Invalid left-hand side expression in prefix operation

我的理解是,这不起作用,因为你不能改变文字2.在前面的例子中,你返回x或y(在递增之前或之后),所以它现在等于+1以前value(所以x / y现在指向3,而不是2)。但是,你不能将2增加为前一个值+1,然后让它指向文字3. 2将永远为2,2将永远不会指向3。

我的推理是否正确?

2 个答案:

答案 0 :(得分:3)

字面值是常量,增量/减量会分别尝试更改其参数。但不能改变常数值。

像编码

一样
2 = 2 + 1;

答案 1 :(得分:0)

增量/减量运算符的参数必须是左值 - 实际上,它必须是可以为其赋值的表达式。这可以是变量,也可以是某些类型的简单结构化表达式(如array[0]++object.foo++)。

常量不是左值。您不能为它们分配值(3 = abc),也不能使用递增或递减运算符来改变它们的值。