代码之家  ›  专栏  ›  技术社区  ›  Derek Adair

++Javascript中someVariable与someVariable++

  •  107
  • Derek Adair  · 技术社区  · 14 年前

    在JavaScript中,您可以使用 ++ 前操作员( )或者在变量名之后( ). 如果有的话,这些递增变量的方法之间有什么区别?

    6 回复  |  直到 5 年前
        1
  •  275
  •   Jon Skeet    14 年前

    与其他语言相同:

    • ++x (pre increment)表示“增加变量;表达式的值是最终值”
    • x++

    x++;
    ++x;
    

    当您在其他地方使用表达式的值时,就会出现差异。例如:

    x = 0;
    y = array[x++]; // This will get array[0]
    
    x = 0;
    y = array[++x]; // This will get array[1]
    
        2
  •  54
  •   Justin Force jmbucknall    10 年前
    • ++x 增加值,然后计算并存储它。
    • x++
    var n = 0, m = 0;
    
    alert(n++); /* Shows 0, then stores n = 1 */
    alert(++m); /* Shows 1, then stores m = 1 */
    

    在可能的情况下,因为您读取变量,所以修改它,然后计算并存储它。与 十++ 运算符,从中读取值、计算值、修改值,然后存储值。

        3
  •  8
  •   Chris    14 年前

    据我所知,如果你单独使用它们,它们也会做同样的事情。如果您试图将它们的结果输出为表达式,则它们可能不同。尝试将alert(i++)与alert(++i)进行比较,以查看区别。i++在加法之前求值为i,++i在求值之前进行加法。

    看到了吗 http://jsfiddle.net/xaDC4/ 举个例子。

        4
  •  4
  •   unclexo    4 年前

    让我们分配 0 x

    let x = 0;
    

    console.log(x++); // Outputs 0
    

    为什么?

    让我们打破僵局 x++ 表达式向下

    x = x;
    x = x + 1;
    

    哪个是 0

    稍后当你使用

    第二条语句返回 x + 1 表达式 (0 + 1) = 1

    记住 在这种状态下 1

    console.log(++x); // Outputs 2
    

    为什么?

    让我们打破僵局 ++x 表达式向下

    x = x + 1;
    x = x;
    

    x+1级 表达式 (1 + 1) = 2

    第二条语句返回 哪个是 2 x = 2 所以它回来了 2

    希望这能帮助你理解什么是后增量和前增量!

        5
  •  2
  •   The Code Guy    7 年前
    var a = 1;
    var b = ++a;
    alert('a:' + a + ';b:' + b); //a:2;b:2
    
    var c = 1;
    var d = c++;
    alert('c:' + c + ';d:' + d); //c:2;d:1
    

    jsfiddle

        6
  •  1
  •   Clifford Fajardo    9 年前
    var x = 0, y = 0;
    
    //post-increment: i++ returns value then adds one to it
    console.log('x++ will log: ', x++); //0
    console.log('x after x++ : ', x);    //1
    
    //pre-increment: adds one to the value, then returns it
    console.log('++y will log: ', ++y); //1
    console.log('y after ++y : ', y);   //1