Com um laço while, você pode executar código repetidamente enquanto uma determinada condição for satisfeita.
Ele é escrito 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 laço entre chaves.
while (condition) {
// code that is executed repeatedly as long as the condition is
// true
}
O JavaScript também tem o laço do-while. Nele, a condição é verificada depois que o corpo do laço é executado. Isso é ú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 laço, você pode usar a palavra-chave break para interromper a execução do laço por completo.
Isso é usado com frequência em conjunto com true como condição.
Assim, você pode controlar de qualquer ponto dentro do corpo do laço quando ele deve parar.
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 aninhada no laço; veja a documentação da MDN para um exemplo.
Em contraste com break, a palavra-chave continue só interrompe a execução da iteração atual e segue para a próxima.
Com continue, muitas vezes você evita envolver grandes partes do corpo do laço em uma 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 laço que se repete (teoricamente) para sempre é criado quando a condição do laço é sempre satisfeita e nenhuma instrução break ou return é alcançada no corpo do laço.
A execução precisa ser encerrada de fora.
Dependendo do ambiente em que esse código roda, isso será feito automaticamente ou vai 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.
Identificar laços infinitos pode parecer trivial neste exemplo simples, mas nem sempre é tão fácil em código mais complexo.
É uma boa prática pensar com calma se a sua condição acaba se tornando falsa ou se a sua instrução break ou return é alcançada.