Pular para o conteúdo

Documentação

Laços e repetições

Os laços de repetição (loops) permitem executar o mesmo bloco de código várias vezes sem precisar repeti-lo manualmente. Eles são fundamentais para somar valores, percorrer listas, buscar elementos e processar dados.

JavaScript oferece opções para diferentes cenários: o clássico for com contador, while para repetições condicionais, for...of para percorrer valores de coleções, for...in para chaves de objetos, além de comandos de controle de fluxo como break e continue.

Laços fundamentais

As estruturas clássicas com contador ou baseadas em uma condição verdadeira.

for clássico

Executa um bloco de código repetidas vezes com um contador que define o início, a condição de parada e o incremento a cada volta.

Sintaxe
for (inicializacao; condicao; incremento) {
  // código
}
Devolve
Não devolve valor (instrução de controle).
for (let i = 1; i <= 3; i++) {
  console.log(`Volta ${i}`);
}
Mostra
Volta 1
Volta 2
Volta 3

while

Executa o bloco enquanto uma condição lógica for verdadeira. A condição é avaliada antes de cada volta.

Sintaxe
while (condicao) {
  // código executado enquanto a condição for verdadeira
}
Devolve
Não devolve valor (instrução de controle).
let vidas = 3;
while (vidas > 0) {
  console.log(`Restam ${vidas} vidas`);
  vidas--;
}
Mostra
Restam 3 vidas
Restam 2 vidas
Restam 1 vidas

do...while

Semelhante ao while, mas avalia a condição depois de executar o bloco. Isso garante que o código rode pelo menos uma vez.

Sintaxe
do {
  // executado pelo menos uma vez
} while (condicao);
Devolve
Não devolve valor (instrução de controle).
let numero = 10;
do {
  console.log(`Executou pelo menos uma vez: ${numero}`);
} while (numero < 5);
Mostra
Executou pelo menos uma vez: 10

Iteração em coleções

Maneiras modernas e legíveis de percorrer listas, textos e objetos.

for...of

A forma mais limpa e moderna de percorrer os valores de qualquer iterável (como arrays, strings, Maps e Sets).

Sintaxe
for (const item of colecao) {
  // usa o item diretamente
}
Devolve
Não devolve valor (instrução de controle).
const frutas = ['uva', 'pera', 'figo'];
for (const fruta of frutas) {
  console.log(fruta);
}
Mostra
uva
pera
figo

for...in

Percorre os nomes de todas as propriedades enumeráveis (as chaves) de um objeto.

Sintaxe
for (const chave in objeto) {
  // chave é o nome da propriedade
}
Devolve
Não devolve valor (instrução de controle).
const usuario = { nome: 'Marina', cargo: 'Dev' };
for (const chave in usuario) {
  console.log(`${chave}: ${usuario[chave]}`);
}
Mostra
nome: Marina
cargo: Dev

forEach()

Método funcional de array que executa uma função de callback para cada elemento da lista.

Sintaxe
lista.forEach((item, indice, array) => {
  // código
})
Devolve
undefined.
const cores = ['azul', 'verde'];
cores.forEach((cor, i) => {
  console.log(`${i + 1}: ${cor}`);
});
Mostra
1: azul
2: verde

Controle de fluxo no laço

Comandos para interromper laços ou pular iterações sob condições específicas.

Comando break

Interrompe e sai imediatamente do laço mais interno em que ele se encontra, pulando qualquer volta restante.

Sintaxe
break;
Devolve
Não devolve valor (comando de fluxo).
for (let i = 1; i <= 10; i++) {
  if (i === 4) break;
  console.log(i);
}
Mostra
1
2
3

Comando continue

Pula o restante do código da volta atual e avança diretamente para a próxima iteração do laço.

Sintaxe
continue;
Devolve
Não devolve valor (comando de fluxo).
for (let i = 1; i <= 5; i++) {
  if (i === 3) continue;
  console.log(i);
}
Mostra
1
2
4
5

Laços aninhados

Um laço colocado dentro do corpo de outro laço. Essencial para matrizes bidimensionais, tabelas e combinações de dados.

Sintaxe
for (...) {
  for (...) {
    // código interno
  }
}
Devolve
Não devolve valor.
const matriz = [[1, 2], [3, 4]];
for (let l = 0; l < matriz.length; l++) {
  for (let c = 0; c < matriz[l].length; c++) {
    console.log(`[${l},${c}] = ${matriz[l][c]}`);
  }
}
Mostra
[0,0] = 1
[0,1] = 2
[1,0] = 3
[1,1] = 4

Quer testar? Copie um exemplo e rode no Rascunho.