了解增量

例如:

var a = 123;
var b = a++;

现在a包含124b包含123

我知道b正在取a的值,然后a就会递增。 但是,我不明白为什么会这样。 JavaScript创作者为什么会这么想的主要原因。 除了混淆新手之外,其他的优势是什么?


这就是为什么它被称为“后递增算子”。 从本质上讲,一切都是一个表达结果的价值。 a + 1是一个导致值为124的表达式。如果将其赋值给b并且b = a + 1 ,则b的值为124.如果不将结果赋值给任何值,则a + 1仍然会导致值124,它会立即被扔掉,因为你不会在任何地方“捕捉”它。

顺便说一句,即使b = a + 1是一个返回124的表达式。赋值表达式的结果值就是赋值。 这就是为什么c = b = a + 1如你所期望的那样工作。

无论如何,有关++--的表达式的特殊之处在于,除了返回值外, ++运算符还会直接修改该变量。 那么当你做b = a++时会发生什么,表达式a++返回值123并增加a增量器首先返回值, 然后递增,而增量器++a 首先递增,然后返回该值。 如果你只是自己写a++而没有赋值,你就不会注意到它的差别。 这就是通常使用a++方式,因为a = a + 1a = a + 1简短的手段。

这是非常标准的。


请注意,你也可以写

b = ++a;

这可能是你可能期待的效果。

认识到这里有两件事是很重要的:分配和增量以及语言应该定义它们将以何种顺序发生。 因为我们既有++a又有a++ ,所以它们应该有不同的含义。

对于我们这些来自C背景的人来说,这很自然。 如果PHP的行为不同,我们可能会想知道为什么PHP选择偏离我们习惯的。


++可以像你的例子那样用作增量后运算符,或者如果在变量之前使用,它可以用作预增加运算符。

var b = ++a;

然后首先将变量a递增,然后递增的值被赋值给b

链接地址: http://www.djcxy.com/p/1827.html

上一篇: Understanding Incrementing

下一篇: = 1` in my PHP document mean?