Understanding Incrementing

前端 未结 7 2047
别那么骄傲
别那么骄傲 2020-11-27 22:31

For example this:

var a = 123;
var b = a++;

now a contains 124 and b contains 123

相关标签:
7条回答
  • 2020-11-27 22:59

    When you put the ++ after the variable, it gets incremented after the assignment. You can also put the ++ before the variable and it gets incremented before the assignment.

    Javascript actually behaves exactly the same way as PHP for prefix and postfix incrementing.

    0 讨论(0)
  • 2020-11-27 23:05

    ++ before variable call pre-increment means increment the value of variable before executing the statement.
    ++ after variable called post-increment means increment the value of variable after executing the statement.

    both increments the value of variable.

    $b=$a++;is equivalent to

    $b=$a;//after
    $a=$a+1;
    

    $b=++$a;`is equivalent to

    $a=$a+1;//before
    $b=$a;
    

    Another example

    $a=5;
    echo $a++;//prints 5;
    
    $a=5;
    echo ++$a;//prints 6;
    
    0 讨论(0)
  • 2020-11-27 23:11

    That's why it's called the "post-incrementing operator". Essentially, everything is an expression which results in a value. a + 1 is an expression which results in the value 124. If you assign this to b with b = a + 1, b has the value of 124. If you do not assign the result to anything, a + 1 will still result in the value 124, it will just be thrown away immediately since you're not "catching" it anywhere.

    BTW, even b = a + 1 is an expression which returns 124. The resulting value of an assignment expression is the assigned value. That's why c = b = a + 1 works as you'd expect.

    Anyway, the special thing about an expression with ++ and -- is that in addition to returning a value, the ++ operator modifies the variable directly. So what happens when you do b = a++ is, the expression a++ returns the value 123 and increments a. The post incrementor first returns the value, then increments, while the pre incrementor ++a first increments, then returns the value. If you just wrote a++ by itself without assignment, you won't notice the difference. That's how a++ is usually used, as short-hand for a = a + 1.

    This is pretty standard.

    0 讨论(0)
  • 2020-11-27 23:13

    Note that you can also write

    b = ++a;
    

    Which has the effect you are probably expecting.

    It's important to realise that there are two things going on here: the assignment and the increment and the language should define in which order they will happen. As we have available both ++a and a++ it makes sense that they should have different meanings.

    For those of us from a C background, this is quite natural. If PHP behaves differently, we might be wondering why PHP chose to deviate from what we are accustomed to.

    0 讨论(0)
  • 2020-11-27 23:14

    Post-increment and pre-increment are common operators in many languages, Javascript being about 30 years from being the first. PHP supports post-increment too.

    0 讨论(0)
  • 2020-11-27 23:16

    This is the standard way of doing it. The postincrement operator assigns the value and then increments.

    The preincrement (++a) operator increments and then assigns.

    I am not familiar with php and cannot say how it does it or why.

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