Javascript 为什么可以';我们增加(+;+;)或减少(--)数字文字量

Javascript 为什么可以';我们增加(+;+;)或减少(--)数字文字量,javascript,numbers,increment,literals,decrement,Javascript,Numbers,Increment,Literals,Decrement,例如,在下面的JavaScript代码中,为什么在使用变量时不会出现错误,但在使用数字文字时,会出现错误(在节点v6.9.5上运行) 我的理解是,这不起作用,因为你不能改变文字2。在上一个示例中,您返回了x或y(在递增之前或之后),因此它现在等于其上一个值的+1(因此x/y现在指向3,而不是2)。但是,您不能将2增加为其先前值的+1,然后使其指向文字3。2永远是2,2永远不会指向3 我的推理正确吗?文字是常量,递增/递减将分别尝试更改其参数。但常量值不能更改 这和编写类似的代码是一样的 2 =

例如,在下面的JavaScript代码中,为什么在使用变量时不会出现错误,但在使用数字文字时,会出现错误(在节点v6.9.5上运行)

我的理解是,这不起作用,因为你不能改变文字2。在上一个示例中,您返回了x或y(在递增之前或之后),因此它现在等于其上一个值的+1(因此x/y现在指向3,而不是2)。但是,您不能将2增加为其先前值的+1,然后使其指向文字3。2永远是2,2永远不会指向3


我的推理正确吗?

文字是常量,递增/递减将分别尝试更改其参数。但常量值不能更改

这和编写类似的代码是一样的

2 = 2 + 1;

文字是常量,递增/递减将分别尝试更改其参数。但常量值不能更改

这和编写类似的代码是一样的

2 = 2 + 1;

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


常量不是左值。你不能给它们赋值(
3=abc
),也不能用递增或递减运算符来改变它们的值。

递增/递减运算符的参数必须是左值——本质上,它必须是一个可以赋值的表达式。这可以是变量,也可以是某些类型的简单结构化表达式(如
array[0]++
object.foo++


常量不是左值。你不能给它们赋值(
3=abc
),也不能用递增或递减运算符来改变它们的值。

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)中,预递增和预递减是对数字文本的有效操作。
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)中,预递增和预递减是对数字文本的有效操作。