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 thefor
displays "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