null
null

Reputation: 2150

Javascript - How does "++i" work?

After experimenting with the use of "i++" and "++i" I could not find a difference between their results when used in a 'for' loop. For example:

for (var i = 0; i < 10; ++i) {
    console.log(i);
}

would yield:

0
1
2
3
4
5
6
7
8
9

Shouldn't it be printing out the numbers from 1 to 10, as the iterator is being incremented before console.log(i) executes?

Upvotes: 2

Views: 94

Answers (3)

Datadimension
Datadimension

Reputation: 1045

May I advise that while your testing is fine on whatever platform you are using, the standard construct is i++

Always code the standard and isolate various platforms and make exceptions as needed !!!

i++ Simply means increment 'i' by one.

I can speculate ++i means to add 'i' to itself eg if 'i' was 2 then it would then increment to 2,4,8,16,32

But I have never seen ++i used in many places.

Upvotes: 0

Felix Kling
Felix Kling

Reputation: 816790

The "increment step" is executed after the loop body is executed. Given

for (a;b;c) {
  d
}

the execution order is

a // initialize
b // condition - first iteration
d // loop body
c // "increment"
b // condition - second iteration
d // loop body
c // "increment"
...
b // condition - last iteration - break

So in your case:

var i = 0;
i < 10;
console.log(i); // 0
++i;
i < 10;
console.log(i); // 1
++i;
// ...
i < 10;

The difference between i++ and ++i is only relevant if you do something with the return value, which you don't.

Upvotes: 4

StriplingWarrior
StriplingWarrior

Reputation: 156624

Because the last clause of the for loop only happens at the end of the loop, as its own statement, the behavior of your loop is not affected by this difference. However, imagine you did something like this:

for (var i = 0; i < 10;) {
    console.log(++i);
}
for (var j = 0; j < 10;) {
    console.log(j++);
}

Then you'd see a difference. The first example would produce numbers 1-10, whereas the second would produce numbers 0-9. That's because f(j++) is equivalent to j += 1; f(j);, whereas f(++i) is more like f(i); i += 1;.

Upvotes: 0

Related Questions