Menu

Loop while em JavaScript: while, do...while, break

Entenda como os loops while e do...while funcionam no JavaScript, quando usá-los no lugar do for e como escapar dos temidos loops infinitos.

Quando você não sabe quantas iterações vai precisar

O for brilha quando você já sabe o intervalo de cara — "faça isso 10 vezes", "percorra cada índice desse array". Já o loop while no JavaScript serve pro outro cenário: continuar executando até que algo mude. Você não faz ideia de quantas voltas vão rolar, só conhece a condição que faz tudo parar.

A sintaxe do while em JavaScript é enxuta:

index.js
Output
Click Run to see the output here.

O JavaScript avalia a condição entre parênteses. Se ela for verdadeira (truthy), o bloco executa. Depois ele verifica a condição de novo, e de novo, até que ela se torne falsa (falsy). Esqueça o count++ e a condição nunca muda — seja bem-vindo ao loop infinito.

O modelo mental: verifica, executa, repete

Para um loop while fazer sentido, três coisas precisam ser verdadeiras:

  1. Algo do qual a condição depende.
  2. Um jeito de o corpo do loop alterar esse algo.
  3. Em algum momento, a condição precisa virar falsa.

Esqueça qualquer um desses pontos e você está encrencado. O bug clássico é pular o passo 2:

let count = 0;

while (count < 5) {
    console.log(count);
    // esqueceu de incrementar count — faz o loop para sempre
}

Isso continua rodando até você matar o processo. Em servidor, o estrago é grande. Por isso, sempre se pergunte: o que no corpo do loop vai tornar a condição falsa?

Um caso real: quando você não sabe onde o loop vai parar

É aqui que o while ganha do for. Você está consumindo itens de algum lugar e só descobre quantos são depois de esvaziar tudo:

index.js
Output
Click Run to see the output here.

shift() remove e retorna o primeiro item da fila. O loop roda enquanto a fila tiver algo dentro e encerra naturalmente quando ela esvazia. Dá pra escrever isso com um for, mas você estaria brigando com o formato do problema — aqui o while expressa a intenção de forma muito mais direta.

do...while em JavaScript: execute primeiro, pergunte depois

O do...while inverte a ordem: executa o corpo antes de checar a condição. Isso garante pelo menos uma iteração:

index.js
Output
Click Run to see the output here.

O corpo sempre executa pelo menos uma vez, mesmo que a condição já seja falsa logo de cara. Compare com o while puro: se a condição for falsa desde o início, o bloco não roda nem uma vez.

O caso clássico: pedir algo ao usuário, validar a resposta e pedir de novo se vier errado. Como você quer perguntar pelo menos uma vez, o do...while cai como uma luva.

Repare no ponto e vírgula depois do ) de fechamento — diferente do while e do for, o do...while exige esse detalhe.

break: saindo do loop na hora

O break encerra o loop mais próximo imediatamente. É assim que você interrompe a execução quando a condição natural não dá conta do recado:

index.js
Output
Click Run to see the output here.

Assim que o break é executado, mais nada dentro do loop roda — nem o restante do corpo, nem uma nova verificação da condição. Você saiu de vez.

while (true) com break em JavaScript

Às vezes a condição de parada fica mais clara dentro do corpo do loop do que no cabeçalho. Nesses casos, inverta a lógica: faça um loop infinito e use break para sair quando terminar.

index.js
Output
Click Run to see the output here.

Duas formas de sair: sucesso ou um limite de segurança. E esse limite importa bastante. Um while (true) sem um break garantido é um loop infinito esperando para acontecer.

continue: pular para a próxima iteração

O continue pula direto para a próxima verificação da condição, ignorando o restante do corpo da iteração atual:

index.js
Output
Click Run to see the output here.

Um detalhe que pega muita gente: se o que faz o loop avançar estiver depois do continue, você acabou de criar um loop infinito. No exemplo acima, o n++ vem antes do continue, então está tudo certo. Coloque depois e o n trava para sempre em um número par.

while ou for no JavaScript: qual escolher

Uma regrinha prática para decidir:

  • Contar ou percorrer um intervalo conhecidofor. O for (let i = 0; i < arr.length; i++) deixa inicialização, condição e incremento tudo numa linha só.
  • Iterar sobre uma coleçãofor...of. Mais limpo do que ficar gerenciando índice na mão.
  • Repetir até algum estado mudarwhile. Processar uma fila, fazer polling, consumir um stream, tentar de novo até dar certo.
  • Executar pelo menos uma vezdo...while.

Na teoria eles são intercambiáveis — dá para reescrever qualquer for como while e vice-versa. Mas escolher o que combina com o formato do problema faz o código se explicar sozinho.

Loop infinito em JavaScript: a regra de ouro

Todo loop while precisa ter uma resposta clara para: o que faz isso parar?

Ou a condição do cabeçalho vai virar false em algum momento, ou existe um break que com certeza vai rodar. Se você não consegue apontar um dos dois, o loop ainda não está pronto.

// Ruim: a condição nunca muda
let ready = false;
while (!ready) {
    console.log("aguardando...");
    // nada aqui altera `ready`
}

// Bom: o corpo afeta a condição
let ready = false;
let checks = 0;
while (!ready) {
    checks++;
    if (checks >= 3) ready = true;
}

No navegador, um loop infinito trava a aba inteira. No Node, ele prende um núcleo da CPU até você matar o processo. Vale a pena pegar esses casos antes de subir pra produção.

A seguir: for...of e for...in

O while resolve bem o cenário de "repetir até algo mudar". Já quando a ideia é percorrer arrays, strings e objetos item por item, o JavaScript oferece duas variações pensadas justamente pra isso — for...of e for...in, que vêm na próxima.

Perguntas frequentes

O que é um loop while em JavaScript?

O while repete o bloco de código enquanto a condição for truthy. O JavaScript avalia a condição primeiro, executa o bloco e depois testa de novo. Se a condição já começar falsa, o corpo do loop nem chega a rodar.

Qual a diferença entre while e do...while?

O while testa a condição antes de executar, então é possível ter zero iterações. Já o do...while executa o bloco uma vez e só depois verifica a condição — ou seja, roda pelo menos uma vez. Use do...while quando a primeira iteração precisa acontecer sem condição, tipo pedir uma entrada do usuário.

Como sair de um loop while em JavaScript?

Use break para encerrar o loop na hora, ou continue para pular para a próxima iteração. O break é o que torna o while (true) viável: você deixa o loop rodando para sempre e interrompe quando alguma condição dentro do corpo é satisfeita.

Aprenda a programar com o Coddy

COMEÇAR