Laços: for e while
Somar à mão os números inteiros de 1 a 100 leva um tempo. Um laço for de três linhas faz isso na hora e mostra 5050.
Fazendo a mesma coisa muitas vezes
Mostrar os números de 1 a 5 com cinco linhas de console.log tudo bem. Mostrar de 1 a 1000 desse jeito, não. Um laço executa o mesmo bloco de código de novo e de novo, mudando um pouco a cada vez, até que uma condição mande parar. É nos laços que os computadores mostram para que servem: nunca se cansam e nunca perdem a conta.
O laço for
for (let i = 1; i <= 5; i++) {
console.log(i);
}
// mostra 1, 2, 3, 4, 5 em linhas separadasOs parênteses depois de for guardam três partes separadas por ponto e vírgula. A primeira, let i = 1, roda uma vez antes de o laço começar e cria uma variável contadora. A segunda, i <= 5, é a condição, conferida antes de cada volta; quando ela fica false, o laço termina. A terceira, i++, roda depois de cada volta e faz o contador avançar. Uma passada pelo bloco se chama iteração. Acompanhe: i é 1, a condição é true, 1 aparece, i vira 2, e assim por diante até i virar 6, a condição dar false e o programa continuar depois da chave de fechamento.
O contador costuma se chamar i, uma tradição da matemática, mas qualquer nome serve. Você também pode contar em outros passos: for (let i = 10; i >= 0; i -= 2) conta para trás 10, 8, 6, 4, 2, 0.
Acumulando um total
O padrão de laço mais comum é o acumulador. Crie uma variável antes do laço, atualize-a dentro e use-a depois. Aqui está a soma da abertura:
let sum = 0;
for (let i = 1; i <= 100; i++) {
sum += i;
}
console.log(sum); // mostra 5050Repare onde cada linha fica. Se let sum = 0 estivesse dentro do laço, sum voltaria a zero a cada iteração. Se o console.log estivesse dentro, ele mostraria 100 totais parciais em vez de uma resposta. O antes e o depois do laço são tão importantes quanto o próprio laço.
O laço while
Um laço while tem só uma condição. Ele continua executando o bloco enquanto a condição for true. Use-o quando você não sabe de antemão quantas voltas vai precisar, como ao dobrar um número até ele passar de 1000.
let n = 1;
let steps = 0;
while (n <= 1000) {
n *= 2;
steps++;
}
console.log(n, steps); // mostra 1024 10Alguma coisa dentro de um laço while precisa, em algum momento, deixar a condição false. Se você esquecer a linha que muda n, a condição fica true para sempre. Isso é um laço infinito, e a página trava. Se acontecer numa caixa de prática, recarregue a página e corrija o código. No laço for, a atualização fica escrita no cabeçalho, o que torna esse erro mais raro.
break e continue
Duas palavras-chave mudam o fluxo dentro de um laço. break sai do laço na hora. continue pula o resto da iteração atual e vai para a próxima. Por exemplo, um laço de 1 a 10 com if (i % 3 === 0) continue; no começo mostra todos os números menos 3, 6 e 9.
Exemplo resolvido. Quantos números de 1 a 50 são múltiplos de 7? Comece com let count = 0, faça i ir de 1 a 50 e escreva dentro if (i % 7 === 0) count++;. Depois do laço, count vale 7: são 7, 14, 21, 28, 35, 42 e 49.
for (início; condição; atualização) { corpo } for (let i = 1; i <= 5; i++)
| laço | Código que executa um bloco de novo e de novo |
| iteração | Uma passada pelo corpo do laço |
| contador | A variável que conta as voltas, muitas vezes i |
| acumulador | Uma variável que vai sendo construída dentro de um laço, como sum |
| while | Repete enquanto uma condição for true |
| laço infinito | Um laço cuja condição nunca fica false |
| break | Sair do laço agora |
| continue | Pular para a próxima iteração |
- Quantas linhas isto mostra?
for (let i = 0; i < 4; i++) { console.log(i); } - Qual é o último número mostrado?
for (let i = 0; i < 4; i++) { console.log(i); } - O que isto mostra?
let total = 0; for (let i = 1; i <= 4; i++) { total += i; } console.log(total); - O que isto mostra?
let p = 1; for (let i = 1; i <= 5; i++) { p *= 2; } console.log(p); - O que isto mostra?
let n = 10; while (n > 3) { n -= 3; } console.log(n); - Quantas linhas isto mostra?
for (let i = 10; i >= 0; i -= 2) { console.log(i); } - O que isto mostra?
for (let i = 1; i <= 10; i++) { if (i === 4) break; console.log(i); }- 1 2 3 on separate lines
- 1 to 10 except 4
- 1 2 3 4 on separate lines
- Quantas linhas isto mostra?
for (let i = 1; i <= 10; i++) { if (i % 2 === 0) continue; console.log(i); } - O que há de errado com este laço?
let i = 0; while (i < 5) { console.log(i); }- Nada
- i nunca muda, então ele nunca para
- Não mostra nada
- O que isto mostra?
let count = 0; for (let i = 1; i <= 50; i++) { if (i % 7 === 0) count++; } console.log(count);
- for (início; condição; atualização) { ... } repete enquanto a condição for true.
- Crie os acumuladores antes do laço, atualize-os dentro e use-os depois.
- while (condição) { ... } serve para laços com número de voltas desconhecido.
- Algo precisa deixar a condição false, senão o laço nunca termina.
- break sai do laço; continue pula para a próxima volta.
Fontes deste curso (2)
- MDN Web Docs, JavaScript Guide (developer.mozilla.org/en-US/docs/Web/JavaScript/Guide, chapters Introduction, Grammar and types, Control flow, Loops and iteration, Functions, Expressions and operators, Numbers and strings, Indexed collections, Working with objects; checked 2026-10-17)
- Ecma International, ECMA-262 ECMAScript 2026 Language Specification, 17th edition, June 2026 (tc39.es/ecma262 and ecma-international.org/publications-and-standards/standards/ecma-262, checked 2026-10-17)
Data de verificação: 2026-10-17