例如:
var a = 123;
var b = a++;现在a包含124,b包含123
我知道b取a的值,然后a递增。然而,我不明白为什么会这样。为什么JavaScript的创建者想要这样做的主要原因。除了让新手感到困惑之外,这样做还有什么好处?
发布于 2009-12-28 15:40:08
这就是为什么它被称为“后增量运算符”。从本质上讲,一切都是一个表达式,它会产生一个值。a + 1是一个导致值124的表达式。如果使用b = a + 1将其赋给b,则b的值为124。如果你没有将结果赋值给任何东西,a + 1仍然会得到值124,它会立即被丢弃,因为你不会在任何地方“捕捉”它。
顺便说一句,即使是b = a + 1也是一个返回124的表达式。赋值表达式的结果值是赋值的值。这就是为什么c = b = a + 1会像你预期的那样工作。
无论如何,使用++和--的表达式的特殊之处在于,除了返回值之外,++运算符还直接修改变量。所以当你执行b = a++时,表达式a++返回值123,并递增a。post incrementor首先返回值,然后递增,而pre incrementor ++a  first 递增,然后返回值。如果您只编写a++本身而没有赋值,您将不会注意到其中的区别。这是通常使用a++的方式,作为a = a + 1的缩写。
这是非常标准的。
发布于 2009-12-28 15:32:49
请注意,您还可以编写
b = ++a;这可能会产生你所期望的效果。
重要的是要意识到这里有两件事:赋值和增量,语言应该定义它们发生的顺序。因为我们有++a和a++,所以它们应该有不同的含义是有道理的。
对于我们这些有C背景的人来说,这是很自然的。如果PHP的行为不同,我们可能会想,为什么PHP选择背离我们所习惯的。
发布于 2009-12-28 15:33:11
++可以用作后增量运算符,如果在variable之前使用,也可以用作前增量运算符。
var b = ++a;然后,首先将变量a递增,然后将递增后的值赋给b。
https://stackoverflow.com/questions/1968371
复制相似问题