例如:
var a = 123;
var b = a++;
现在a
包含124
而b
包含123
我知道b正在取a的值,然后a正在递增。但是,我不明白为什么会这样。为什么JavaScript的创建者会想要这个的主要原因。除了混淆新手之外,这有什么好处?
答案 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;
这可能是您所期待的效果。
重要的是要意识到这里有两件事情:分配和增量以及语言应该定义它们将以何种顺序发生。由于我们同时提供++a
和a++
,因此它们应具有不同的含义。
对于我们这些来自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也支持后增量。