Syntax of the for:
for(
INICIALIZACAO;
CONDICAO para executar o CODIGO entre { };
tarefa para fazer depois de cada execucao do CODIGO
)
{
CODIGO a ser executado repetidas vezes, enquanto a CONDICAO for verdadeira
}
I will show you a description step by step. For this, I numbered the lines and decreased to 3 loops only:
1. for( var i=0; i<3; i++ )
2. {
3. alert(i);
4. }
5. alert(i);
Okay, see how this code is understood by your system:
a) Estamos na linha 1. Aqui foi "criado" um for, e definido que i é zero;
b) o programa avança para a linha 2, com i valendo zero;
c) avançamos para a linha 3 e é exibido o valor de i, que é zero;
d) o programa avança para a linha 4. Como o escopo do for encerrou, é executado i++ e testado se i<3
e) i agora é um, portanto SIM, i é menor que três, então VOLTAMOS para a linha 2
f) avançamos para a linha 3, e é exibido o valor de i, que é um;
g) o programa avança para a linha 4. Como o escopo do for encerrou, é executado i++ e testado se i<3
h) i agora é dois, portanto SIM, i é menor que três, então VOLTAMOS para a linha 2
i) avançamos para a linha 3, e é exibido o valor de i, que é dois;
j) o programa avança para a linha 4. Como o escopo do for encerrou, é executado i++ e testado se i<3
k) i é três, portanto NÃO É menor que três, portanto AVANÇAMOS para a linha 5.
l) Pronto, acabou o loop, i vale 3
m) na linha 5, é exibido o valor de i, que é 3
Note that I oversimplified logic absurdly, the steps are a little more complex internally. As mentioned by @mgibsonbr, i<3 test already happens between steps (a) and (b), "jumping" face to line 5 if the result is not true (but don’t worry about it now).
The best is to understand that this "comes and goes" from line 2 to line 4 only happens while the condition ( i<3 ) is true.
The code above equals this one:
var i = 0; // iniciamos com i=0
for(;i<3;) // executamos repetidamente o que está entre "{" e "}" enquanto i<3
{
alert(i); // mostramos i
i++; // incrementamos i
}
alert(i); // Somente quando i<3 for falso é que chegaremos nessa linha aqui
If you don’t understand why
alert(i)outside thefordisplays "10", you are not understanding scope, not how it works afor. Show the entire code (Javascript only) you are using to better explain.– Vinícius Gobbo A. de Oliveira
Related: http://answall.com/q/1237/129
– Sergio