O que causou esse problema é o resultado da execução de um programa JS:
A cópia do código é a seguinte:
var i = 0;
função a () {
para (i = 0; i <20; i ++) {
}
}
função b () {
para (i = 0; i <3; i ++) {
um();
}
retornar i;
}
var resultado = b ();
O resultado deste programa em execução é resultado = 21;
A partir deste programa, podemos ver que não há problema de que o valor de I seja 20 quando a função A retorna.
Quando a função B retorna, vale a pena discutir se o valor de I é 20 ou 21.
A essência do problema é: primeiro determine se i <3 ou i ++ é realizado primeiro e depois determine se i <3.
De acordo com os resultados da execução, pode -se ver que o I ++ foi executado primeiro.
A cópia do código é a seguinte:
função a () {
para (i = 0; i <20; i ++) {
// sem var i
// eu aqui é a variável global que todos podem acessar
}
}
função b () {
para (i = 0; i <3; i ++) {
// alerta (i); // Da mesma forma, aqui também é uma variável global, retornando 0 e apenas uma vez retorna
a (); // esta função retorna i = 20
// Quando i = 20 passa I ++ e I = 21, então não atende às condições de i <3 e sai diretamente. Então retorne i = 21 Isso é normal!
}
retornar i;
}
var resultado = b ();
Aqui concluímos a ordem de execução do loop for:
O procedimento a seguir é um exemplo
A cópia do código é a seguinte:
para (int i = 0; i <10; i ++)
{
}
Primeiro execute i = 0; i <10; e depois execute a primeira rodada do corpo do loop
Em seguida, execute: i ++, i <10; Em seguida, execute a segunda rodada do corpo do loop
Até o último i ++ após i> = 10, o loop termina.
Agora mesmo
A declaração 1 é executada antes do início do loop (bloco de código)
A declaração 2 define as condições para executar um loop (bloco de código)
A declaração 3 é executada após a execução do loop (bloco de código)