Javascript变量在评估中递增?

时间:2011-09-14 18:03:25

标签: javascript

如果我有

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++会在之后递增?

4 个答案:

答案 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++进行比较,然后添加一个。

诀窍是通过变量之前的++(之前发生增量)或变量之后(增量发生之后)来记住它。