# Iterate with JavaScript Do...While Loops - Max value of i

Why does `while ( i < 11)` return i as 11? Surely `i <= 11` or `i < 12` should result in i = 11; i < 11 should result in i = 10 as the maximum value ever reached?

// Setup
var myArray = [];
var i = 10;

// Only change code below this line.

do {
myArray.push(i);
i++;
} while (i < 11 );

``````

User Agent is: <code>Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36</code>.

https://learn.freecodecamp.org/javascript-algorithms-and-data-structures/basic-javascript/iterate-with-javascript-do---while-loops``````

This is because the condition is tested after the loop

In the final line of the last iteration of the loop you increment `i` and it is now `11`

The condition is then tested: `11 < 11` is `false`, therefore the loop can not continue.

Therefore outside the loop, `i` is `11`

How confusing. So its value is 1 higher than in a `for ()` loop, e.g

``````for (i = 1;  i < 10; i++) {
document.write(i);
}

// which returns up to 9, not 10``````

mcpop999, nope! It’s just as confusing. What’s being asked is the value of `i` after you exit the loop. This will always be a value that makes the testing condition false, otherwise you wouldn’t have left the loop. In your example

``````for (i = 1;  i < 10; i++) {

}
document.write(i) // 10
``````

If `i < 10` was true after you’ve left the loop, then you should still be in the loop

Aha! Yes I see now! Been using them for ages, but never realised about the “after the loop has finished” value! Thanks @joker314 and @gebulmer.