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);
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.
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.
}
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.