了解增量

时间:2009-12-28 07:27:48

标签: javascript operators

例如:

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

现在a包含124b包含123

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

7 个答案:

答案 0 :(得分:8)

这就是为什么它被称为“后递增算子”。基本上,一切都是表达式,它会产生一个值。 a + 1是一个表达式,其值为124.如果您使用b将其分配给b = a + 1,则b的值为124.如果您未指定结果对于任何事情,a + 1仍会产生值124,它会立即被丢弃,因为你没有在任何地方“捕捉”它。

BTW,偶数b = a + 1是一个返回124的表达式。赋值表达式的结果值是赋值。这就是c = b = a + 1按预期工作的原因。

无论如何,关于++--的表达式的特殊之处在于,除了返回值之外,++运算符还会直接修改变量。那么当你执行b = a++时会发生什么,表达式a++返回值123并递增a 帖子 递增器首先返回值 然后 增量,而 pre incrementor ++a 首先 增量,然后返回该值。如果你只是在没有作业的情况下自己写了a++,你就不会注意到它们的区别。这就是a++通常使用的方式,作为a = a + 1的简写。

这是非常标准的。

答案 1 :(得分:5)

请注意,您也可以写

b = ++a;

这可能是您所期待的效果。

重要的是要意识到这里有两件事情:分配和增量以及语言应该定义它们将以何种顺序发生。由于我们同时提供++aa++,因此它们应具有不同的含义。

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

答案 2 :(得分:3)

++可以用作示例中的后增量运算符,如果在变量之前使用,它可以用作预增量运算符。

var b = ++a;

然后首先变量a将递增,然后递增的值将分配给b

答案 3 :(得分:1)

这是执行此操作的标准方法。 postincrement运算符赋值,然后递增。

preincrement(++a)运算符递增然后赋值。

我不熟悉php,不能说它是怎么做的或为什么。

答案 4 :(得分:0)

当您在变量之后放置++ 时,它会在赋值后递增。您还可以在变量之前放置++ ,然后在分配之前将其增加

Javascript实际上完全与PHP的前缀和后缀递增相同。

答案 5 :(得分:0)

在变量调用预增量之前的

++意味着在执行语句之前增加变量的值 变量调用后增量后的++表示在执行语句后增加变量的值。

都增加变量的值。

$b=$a++;相当于

$b=$a;//after
$a=$a+1;

$ b = ++ $ a;`相当于

$a=$a+1;//before
$b=$a;

另一个例子

$a=5;
echo $a++;//prints 5;

$a=5;
echo ++$a;//prints 6;

答案 6 :(得分:-3)

后增量和预增量是许多语言中常见的运算符,Javascript距离第一个约30年。 PHP也支持后增量。