++someVariable vs. someVariable++ in JavaScript

后端 未结 6 1932
长发绾君心
长发绾君心 2020-11-22 02:02

In JavaScript you can use ++ operator before (pre-increment) or after the variable name (post-increment). What, if any, are the differences b

相关标签:
6条回答
  • 2020-11-22 02:42

    I've an explanation of understanding post-increment and pre-increment. So I'm putting it here.

    Lets assign 0 to x

    let x = 0;
    

    Lets start with post-increment

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

    Why?

    Lets break the x++ expression down

    x = x;
    x = x + 1;
    

    First statement returns the value of x which is 0

    And later when you use x variable anywhere, then the second statement is executed

    Second statement returns the value of this x + 1 expression which is (0 + 1) = 1

    Keep in mind the value of x at this state which is 1

    Now lets start with pre-increment

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

    Why?

    Lets break the ++x expression down

    x = x + 1;
    x = x;
    

    First statement returns the value of this x + 1 expression which is (1 + 1) = 2

    Second statement returns the value of x which is 2 so x = 2 thus it returns 2

    Hope this would help you understand what post-increment and pre-increment are!

    0 讨论(0)
  • 2020-11-22 02:42
    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
    
    0 讨论(0)
  • 2020-11-22 02:51

    Same as in other languages:

    • ++x (pre-increment) means "increment the variable; the value of the expression is the final value"
    • x++ (post-increment) means "remember the original value, then increment the variable; the value of the expression is the original value"

    Now when used as a standalone statement, they mean the same thing:

    x++;
    ++x;
    

    The difference comes when you use the value of the expression elsewhere. For example:

    x = 0;
    y = array[x++]; // This will get array[0]
    
    x = 0;
    y = array[++x]; // This will get array[1]
    
    0 讨论(0)
  • 2020-11-22 02:51

    As I understand them if you use them standalone they do the same thing. If you try to output the result of them as an expression then they may differ. Try alert(i++) as compared to alert(++i) to see the difference. i++ evaluates to i before the addition and ++i does the addition before evaluating.

    See http://jsfiddle.net/xaDC4/ for an example.

    0 讨论(0)
  • 2020-11-22 02:53
    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

    0 讨论(0)
  • 2020-11-22 03:01
    • ++x increments the value, then evaluates and stores it.
    • x++ evaluates the value, then increments and stores it.
    var n = 0, m = 0;
    
    alert(n++); /* Shows 0, then stores n = 1 */
    alert(++m); /* Shows 1, then stores m = 1 */
    

    Note that there are slight performance benefits to using ++x where possible, because you read the variable, modify it, then evaluate and store it. Versus the x++ operator where you read the value, evaluate it, modify it, then store it.

    0 讨论(0)
提交回复
热议问题