[英]Javascript variable incrementing in evaluation?
如果我有
a = 0;
if(a++ < 1){
console.log(a);
}
我在控制台中得到值1。 如果a随增量变为1,那么为什么表达式计算为true?
如果我做
a = 0;
if(++a < 1){
console.log(a);
}
然后,我在控制台中什么也没得到,这意味着该表达式的计算结果为假。
我一直使用variable++
在for循环等中递增变量。 我已经看过++variable
,但是我认为这是写同一件事的另一种方式。 有人可以解释发生了什么,为什么? 两者有什么区别?
++variable
是否在评估时增加variable++
,而variable++
之后才增加?
我已经看过
++variable
,但是我认为这是写同一件事的另一种方式。
不,它们根本不一样。
++variable
是预递增的。 它递增variable
并求值到新值。
variable++
是后递增的。 它递增variable
并求值到旧值。
这对于大多数C风格的语言都是常见的,包括C本身,C ++,PHP,Java和Javascript。
即:
++variable
是否在评估时增加variable++
,而variable++
之后才增加?
对,就是这样。 :)
这里有一个非常重要的区别。 a++
在求值后递增a,而++a
在求值前递增。 方便地, ++
的位置也位于之前或之后,因此您可以记住哪个是哪个。
换句话说,这就是您正在有效地做的事情:
a = 0;
if (a < 1)
{
a = a + 1;
console.log(a);
}
else
{
a = a + 1;
}
它是后递增的,因此为了比较它为0
,然后在block语句中为1
。
a = 0;
// v-----0 < 1
if(a++ < 1){
// now a has been incremented to 1
console.log(a);
}
预递增版本看起来像:
a = 0;
// v-----1 < 1
if(++a < 1){
// evaluate to false, so this doesn't run
console.log(a);
}
++var
一个,然后进行比较。
var++
进行比较,然后添加一个。
诀窍是要记住它++
变量来之前(增量发生前),或之后的变量(增量发生后)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.