繁体   English   中英

在评估中增加Javascript变量?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM