Ci

Ciclos while em JavaScript

8 exercícios

Sobre Ciclos while

Sintaxe geral

Com um ciclo while, podes executar código repetidamente desde que uma determinada condição se cumpra.

Escreve-se com a palavra-chave while seguida de uma condição entre parênteses e de um bloco de código que contém o corpo do ciclo entre chavetas.

while (condition) {
  // code that is executed repeatedly as long as the condition is
  // true
}

O JavaScript também tem um ciclo do-while. Aqui, a condição é verificada depois de o corpo do ciclo ser executado. Isto é útil quando a condição depende de avaliações feitas no corpo.

do {
  // The code here will always be executed once and then
  // repeatedly while the condition is true.
} while (condition);

Break

Dentro do corpo de um ciclo, podes usar a palavra-chave break para parar completamente a execução do ciclo. É frequentemente usada em combinação com true como condição. Assim, podes controlar quando o ciclo deve parar a partir de qualquer ponto do corpo do ciclo.

const winningNumber = 7;

while (true) {
  const num = readUserGuess();
  if (num === winningNumber) {
    break;
  }
}

A palavra-chave break não pode ser usada dentro de uma função que esteja aninhada no ciclo; vê a documentação da MDN para um exemplo.

Continue

Ao contrário de break, a palavra-chave continue só interrompe a execução da iteração atual e passa à seguinte. Com continue, podes muitas vezes evitar envolver grandes partes do corpo do ciclo numa condicional.

let i = 0;

while (i < 100) {
  i = i + 2;

  if (i % 3 === 0) {
    continue;
  }

  // The code here will only be executed when i was not divisible
  // by 3 in the check above.
}

Ciclos infinitos

Um ciclo que se repete (teoricamente) para sempre é criado quando a condição do ciclo é sempre cumprida e nenhuma instrução break ou return é alcançada no corpo do ciclo. A execução tem de ser terminada do exterior. Consoante o ambiente em que esse código corre, isto será feito automaticamente ou exigirá intervenção manual.

let i = 0;

while (i < 100) {
  if (i % 3 === 0) {
    continue;
  }

  i = i + 2;
}

// This loop runs forever since the variable i does not change
// anymore after it is divisible by 3 the first time.

Detetar ciclos infinitos pode parecer trivial neste exemplo simples, mas nem sempre é assim tão fácil com código mais complexo. É boa prática pensar cuidadosamente se a tua condição acaba por se tornar falsa ou se a tua instrução break ou return é alcançada.

Editar via GitHub A ligação abre numa nova janela ou separador

Aprende Ciclos while