【发布时间】:2017-08-12 06:48:24
【问题描述】:
例如,在下面的 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值(所以 x/y 现在指向 3,而不是 2)。但是,您不能将 2 增加到其先前值的 +1,然后让它指向文字 3。2 将永远是 2,2 永远不会指向 3。
我的推理是否正确?
【问题讨论】:
-
console.log(x++)与console.log(x); x=x+1相同。将2替换为x,第二个语句(2=2+1) 尝试将2+1存储在非变量(2) 中。console.log(++x)与x=x+1; console.log(x)相同。--也是如此。 -
++和--是对变量的操作。它们递增或递减并设置值。你不能改变一个常数。 -
其实在python等一些语言中,预增和预减都是对数字字面量的有效操作。
标签: javascript numbers increment literals decrement