如果我有
a = 0;
if(a++ < 1){
console.log(a);
}
我在控制台中获得值1。如果a随着增量变为1,那么表达式为什么评估为真?
如果我这样做
a = 0;
if(++a < 1){
console.log(a);
}
然后我在控制台中没有得到任何内容,这意味着表达式被评估为false。
我一直使用variable++
来增加for循环中的变量等。我见过++variable
,但我认为这是另一种写同样的东西的方法。有人可以解释发生了什么,为什么?这两者有什么区别?
++variable
在评估时是否会增加变量,而variable++
会在之后递增?
答案 0 :(得分:3)
我见过
++variable
,但我认为这是写同样事情的另一种方式。
不,他们根本不一样。
++variable
pre -increment。
它递增variable
并计算为新值。
variable++
帖子 -increment。
它递增variable
并计算为旧值。
这对于大多数C风格的语言来说都很常见,包括C本身,C ++,PHP,Java和Javascript。
即:
++variable
在评估时是否会增加变量,而variable++
会在之后递增?
是的,确切地说。 :)
答案 1 :(得分:2)
这里有一个非常重要的区别。 {/ 1>}在评估后递增,其中a++
在评估之前递增。方便地,++a
的位置也可以在之前或之后,这样你就可以记住哪个是哪个。
换句话说,这就是你正在做的事情:
++
答案 2 :(得分:1)
它是后递增的,因此对于比较它是0
,然后在块语句中它是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);
}
答案 3 :(得分:1)
++var
添加一个,然后进行比较。
var++
进行比较,然后添加一个。
诀窍是通过变量之前的++
(之前发生增量)或变量之后(增量发生之后)来记住它。