Curso IT Fundamentos JavaScript 042_Loops while、for
Instruções de loop são métodos usados para executar repetidamente um bloco de código. JavaScript fornece diferentes tipos de instruções de loop como while, do-while, for, etc.
Um corpo de loop completo inclui: expressão de inicialização, condição de loop e iterador.
Loop while
O loop while é usado para executar repetidamente um bloco de código quando a condição é true.
A execução única do corpo do loop é chamada de uma iteração.
Qualquer expressão ou variável pode ser uma condição de loop, a condição de loop será calculada e o resultado será convertido em um valor booleano.
Semelhante ao if, se o corpo do loop tiver apenas uma instrução, você também pode omitir as chaves {…}, mas isso não é recomendado.
A condição é verificada antes de cada iteração.
Exemplo:
let i = 0; // Expressão de inicialização, geralmente usada para declarar variável contador, sem ela ocorrerá erro undefinedwhile (i < 5) { // Condição de loop, se for `true`, o loop continuará executando console.log(i); i++; // Iterador, geralmente usado para atualizar a variável contador, correspondendo à condição de loop}Exemplo de loop infinito:
let i = 0; while (1) { // Condição sempre true entrará em loop infinito console.log(i); i++; // Geralmente usa esta forma de atualização do contador para a condição de loop if (i >= 5) break; // Comentar esta linha entra em modo de loop infinito}Loop do-while
O loop do-while é semelhante ao loop while, mas ele executa o corpo do loop uma vez primeiro e depois verifica se a condição é true. Se a condição for verdadeira, continua executando o corpo do loop.
É necessário prestar atenção ao cenário de uso. Use do-while apenas quando for necessário executar o corpo do loop pelo menos uma vez, independentemente de a condição ser verdadeira ou não. Para outros cenários, recomenda-se o loop while.
A condição é verificada após cada iteração.
Exemplo:
let i = 0;do { console.log(i); i++;} while (i < 5);Loop for
O loop for é uma estrutura de loop mais complexa, mas também a mais comumente usada, utilizada para executar repetidamente um bloco de código.
O loop for contém três partes: expressão de inicialização, condição de loop e iterador. A seguir está a sintaxe básica do loop for:
A condição é verificada antes de cada iteração, e outras configurações podem ser usadas.
Exemplo:
for (let i = 0; i < 5; i++) { console.log(i);}Exemplo de loop infinito:
let i = 0; for ( ; ; ) { // Omitir todas as condições entrará em loop infinito console.log(i); i++; // Geralmente usa esta forma de atualização do contador para a condição de loop if (i >= 5) break; // Comentar esta linha entra em modo de loop infinito}Omitindo segmentos de instrução
O loop for pode omitir qualquer um ou mais da expressão de inicialização, condição de loop ou iterador, mas o ponto e vírgula ; deve ser mantido. O ponto e vírgula é usado para separar cada parte, quando uma parte é omitida, o ponto e vírgula correspondente ainda precisa ser mantido.
Exemplo:
let x = 0;for (; x < 5; x++) { console.log(x);}// Omite a expressão de inicialização, movendo-a para fora do loop, o loop ainda é válido
let y = 0;for (;; y++) { if (y >= 5) { break; } console.log(y);}// Omite a condição de loop, terminando o loop através da instrução `if` e `break`
let z = 0;for (; z < 5;) { console.log(z); z++;}// Omite o iterador, o iterador é movido para dentro do corpo do loop, o loop ainda é válidoLoops aninhados
Loop aninhado refere-se a incluir outra estrutura de loop completa dentro do corpo de um loop. O loop aninhado executa o loop interno uma vez a cada execução do loop externo.
Exemplo de triângulo regular:
// Exemplo Afor (let i = 1; i <= 5; i++) { // Loop externo, controla o número de linhas, de 1 a 5. let row = ''; // A cada execução do loop externo, cria uma string vazia `row`, usada para armazenar as estrelas da linha atual. for (let j = 1; j <= i; j++) { // Loop interno, controla o número de estrelas em cada linha, de 1 ao número da linha atual `i`. row += '⭐ '; // Adiciona estrela a `row`, formando a string de estrelas da linha atual. } console.log(row); // Exibe a string de estrelas da linha atual.}// Exemplo Bfor (let i = 1; i <= 5; i++) { // Loop externo representa o número de linhas for (let j = 1; j <= i; j++) { // Loop interno representa as colunas document.write('⭐'); // Usa estrela como elemento gráfico } document.write('</br>'); // Quebra de linha}Exemplo de triângulo invertido:
// Exemplo Afor (let i = 5; i >= 1; i--) { // Loop externo, controla o número de linhas, de 1 a 5. let row = ''; // A cada execução do loop externo, cria uma string vazia `row`, usada para armazenar as estrelas da linha atual. for (let j = 1; j <= i; j++) { // Loop interno, controla o número de estrelas em cada linha, de 1 ao número da linha atual `i`. row += '* '; // Adiciona estrela a `row`, formando a string de estrelas da linha atual. } console.log(row); // Exibe a string de estrelas da linha atual.}// Exemplo Bfor (let i = 1; i <= 5; i++) { // Loop externo representa o número de linhas for (let j = 0; j <= 5 - i; j++) { // Loop interno representa as colunas document.write('⭐'); // Usa estrela como elemento gráfico } document.write('</br>'); // Quebra de linha}break para terminar (finalizar, sair) do loop
break é usado para terminar (finalizar, sair) do loop atual ou instrução switch. Se não houver break, os case subsequentes continuarão a ser executados (ou seja, ocorre o fenômeno de “penetração”).
A combinação “loop infinito + break” é adequada para situações onde não é necessário verificar a condição no início/fim do loop, mas é necessário verificar a condição no meio ou mesmo em várias posições do corpo.
Exemplo:
let count = 0;while (true) { console.log("No loop..."); // Simula uma condição, quando satisfeita, sai do loop if (count === 5) { console.log("Condição satisfeita, saindo do loop"); break; } count++;}continue para continuar a próxima iteração (pular) do loop
continue é usado para terminar prematuramente a iteração atual em um loop e continuar a próxima iteração.
continue é a “versão leve” do break. Ele não para o loop inteiro. Em vez disso, para a iteração atual e força o início de uma nova iteração (se a condição permitir).
Exemplo:
for (let i = 0; i < 8; i++) { if (i % 2 === 0) { continue; // Quando i módulo 2 for 0, pula a iteração atual e continua a próxima iteração } console.log(i);}