While JavaScript: um guia completo

O while JavaScript é uma ferramenta poderosa em JS (e na maioria das linguagens de programação) que permite repetir um bloco de código enquanto uma condição for verdadeira. 

É importante garantir que a condição do loop eventualmente se torne falsa para evitar loops infinitos.

Nesse artigo, você terá um guia completo das principais informações para executar e administrar essa ferramenta dentro do seu código. Isso o tornará mais limpo, fácil de compreender e útil ao seu projeto.

Siga a leitura. Considere ler também sobre outro loop: For JavaScript: como usar esse laço de repetição.

O que é o while JavaScript?

O loop while é uma das estruturas de repetição disponíveis em JavaScript e em muitas outras linguagens de programação. Os loops são fundamentais, pois permitem repetir uma ação ou conjunto de ações várias vezes com base em determinadas condições. 

O loop while é crucial quando desejamos executar um bloco de instruções enquanto uma condição específica for verdadeira, sem saber de antemão quantas repetições são necessárias. Isso contrasta com outros loops, como o for, onde geralmente temos uma ideia do número de iterações de antemão.

Frequentemente usado em situações onde o número de iterações é determinado dinamicamente, em tempo de execução. Ele testa uma condição antes de entrar no loop e, por isso, é possível que o bloco de código dentro do loop nunca seja executado se a condição inicial já for falsa.

Algumas das possibilidades e exemplos de aplicação incluem:

  • Leitura de dados: imagine um programa que solicita ao usuário inserir senhas até que uma senha válida seja fornecida. Neste cenário, você pode usar um loop while para continuar solicitando uma senha até que a entrada do usuário corresponda à senha correta;
  • Jogos: em jogos que possuem um sistema de tentativas, como adivinhar um número, você pode utilizar o loop while para permitir que o jogador continue tentando até acertar o número ou até que todas as tentativas se esgotem.

Dessa forma, o loop while em JavaScript é uma ferramenta essencial que oferece grande flexibilidade para os desenvolvedores, permitindo a execução repetida de instruções com base em condições dinâmicas. 

Seja em aplicações web, jogos ou sistemas mais complexos, é uma estrutura que certamente você encontrará e utilizará frequentemente.

Sintaxe básica do loop while JavaScript

Vamos detalhar abaixo a estrutura básica do `while ` em JavaScript com exemplos simples e diretos. Por exemplo:

while (condição) {

    // código a ser executado enquanto a condição for verdadeira

}

1. Contando até 5

let contador = 1;

while (contador <= 5) {

    console.log("Número:", contador);

    contador++; // Incrementa o valor de contador

}

Dissecando:

  • A variável `contador` começa com valor `1`;
  • A condição do `while` verifica se `contador` é menor ou igual a `5`;
  • Dentro do `while`, o `console.log` exibe o valor atual de `contador`;
  • O `contador++` incrementa o valor de `contador` a cada repetição;
  • O loop continua até `contador` ser maior que `5`.

Ao executar esse código, você verá no console:

Número: 1

Número: 2

Número: 3

Número: 4

Número: 5

2. Saudação até cansar

let resposta = "sim";

while (resposta === "sim") {

    console.log("Olá! Quer ser cumprimentado novamente?");

    resposta = prompt("Digite 'sim' para continuar ou qualquer outro valor para sair:");

}

Dissecando:

  • A variável `resposta` começa com o valor “sim”;
  • A condição do `while` verifica se a `resposta` é igual a “sim”;
  • Dentro do `while`, uma mensagem é mostrada no console;
  • O `prompt` pede ao usuário para inserir uma resposta. Se o usuário digitar “sim”, o loop continua; caso contrário, ele termina.

Ao executar esse código, uma janela de diálogo aparecerá repetidamente até que o usuário insira algo diferente de “sim”.

Recomendamos testar esses exemplos em um ambiente de execução JavaScript, como o console do navegador ou em plataformas online como o JSFiddle ou CodePen. Assim, você poderá ver o `while` funcionando.

3. Multiplicando valores

let base = 2;

let expoente = 0;

while (expoente <= 3) {

    console.log(`2 elevado a ${expoente} é:`, Math.pow(base, expoente));

    expoente++;

}

Dissecando:

  • Definimos uma `base` de valor 2 e um `expoente` que começa em 0;
  • A condição do `while` verifica se `expoente` é menor ou igual a 3;
  • Usamos `Math.pow` para calcular o valor de `base` elevado ao `expoente` e exibimos o resultado;
  • Incrementamos o `expoente` a cada iteração.

4. Apresentando frutas

let frutas = ["maçã", "banana", "manga"];

let indice = 0;

while (indice < frutas.length) {

    console.log(`Eu gosto de ${frutas[indice]}!`);

    indice++;

}

Dissecando:

  • Temos um array `frutas` com alguns itens;
  • Usamos uma variável `indice` para acessar cada elemento do array;
  • A condição do `while` verifica se `indice` é menor que o comprimento do array;
  • A cada iteração, exibimos a fruta atual e incrementamos o `indice`.

5. Calculando o fatorial

let numero = 5;

let fatorial = 1;

let contador = numero;

while (contador > 1) {

    fatorial *= contador;  // Mesmo que: fatorial = fatorial * contador;

    contador--;

}

console.log(`O fatorial de ${numero} é:`, fatorial);

Dissecando:

  • Estamos tentando calcular o fatorial de `numero`;
  • Inicializamos a variável `fatorial` com 1 e `contador` com o valor de `numero`;
  • A condição do `while` verifica se `contador` é maior que 1;
  • Multiplicamos o `fatorial` pelo valor atual de `contador` e depois decrementamos o `contador`.

Esses exemplos abordam diferentes cenários e aplicações do loop `while` em JavaScript. Você pode testá-los no console do navegador ou em ambientes online para obter uma compreensão mais clara de como eles funcionam.

Comparação com outros loops

Os loops em JavaScript, como em muitas linguagens de programação, são estruturas que permitem a execução repetida de blocos de código. 

Em JavaScript, os loops mais comuns são for, while e do...while. Vamos explorar cada um deles e discutir suas vantagens e desvantagens em relação ao while JavaScript. Por exemplo:

1. Loop for

for (inicialização; condição; incremento/decremento) {

    // código a ser executado

}

Vantagens

  • É muito compacto, pois permite inicialização, condição e incremento/decremento no mesmo lugar;
  • É o loop mais utilizado quando se sabe o número exato de iterações, como percorrer arrays.

Desvantagens

  • Pode ser um pouco mais complicado para iniciantes;
  • Não é ideal para situações onde o número de iterações é desconhecido ou se determina por uma condição externa ao loop.

2. Loop do…while

do {

    // código a ser executado

} while (condição);

Vantagens

  • Garante a execução do bloco de código pelo menos uma vez, independentemente da condição;
  • Útil em situações onde deve-se realizar uma ação antes de verificar uma condição (por exemplo, pedir input do usuário antes de verificar sua validade).

Desvantagens

  • Pode ser menos intuitivo do que os outros tipos de loop;
  • Como o while, pode levar a loops infinitos se a condição nunca se tornar falsa.

Comparação Geral

  • Uso específico: prefere-se o loop for geralmente quando se sabe o número exato de iterações. Já o while e o do...while com base na lógica da aplicação e no fluxo desejado;
  • Risco de loops infinitos: todos os loops têm potencial para criar loops infinitos, mas o while e do…while têm um risco ligeiramente maior se não houver tratamento correto, pois sua lógica muitas vezes depende de variáveis ou condições externas;
  • Legibilidade: o loop for é extremamente legível para desenvolvedores experientes quando se trata de iterar sobre uma coleção ou um intervalo conhecido. Por outro lado, o while e do...while podem ser mais intuitivos para lógicas que envolvam condições de parada menos previsíveis.

Assim, a escolha do loop muitas vezes se resume à situação específica e à preferência pessoal do desenvolvedor.

Usando o loop while em aplicações web

Em aplicações web, o loop while pode ser utilizado para diversos propósitos, seja para processar dados antes de serem exibidos, seja para criar interações específicas com o usuário. Abaixo, apresentamos alguns cenários onde o while pode ser aplicado em contextos web.

1. Carregando uma lista de comentários até atingir um limite

Imagine que João tem um blog e deseja carregar comentários em uma postagem, mas não quer sobrecarregar a página. Ele decide carregar no máximo 10 comentários por vez.

let comentarios = ['Comentário 1', 'Comentário 2', 'Comentário 3', ...]; // Lista com muitos comentários.

let limite = 10;

let contador = 0;

while (contador < limite && contador < comentarios.length) {

    let comentario = comentarios[contador];

    let elemento = document.createElement('p');

    elemento.textContent = comentario;

    document.body.appendChild(elemento);

    contador++;

}

Dissecando:

  • João tem uma lista de comentários;
  • Ele define um limite de 10 comentários para carregar;
  • Um loop while é usado para iterar sobre os comentários e criar um elemento p para cada um, até atingir o limite ou até que todos os comentários tenham sido processados;
  • Cada comentário é então adicionado ao corpo do documento.

2. Solicitar feedback do usuário até que ele cancele

Joana tem um site de e-commerce e quer saber a opinião dos visitantes sobre uma nova característica do site. Ela decide pedir feedback até que o usuário opte por cancelar, como ilustramos abaixo, por exemplo:

let desejaFeedback = true;

while (desejaFeedback) {

    let feedback = prompt('O que você achou da nossa nova característica? (Deixe vazio e clique em cancelar para sair)');

    if (!feedback) {

        desejaFeedback = false;

    } else {

        // Aqui Joana poderia enviar o feedback para um servidor ou armazená-lo de alguma forma.

        console.log("Feedback recebido:", feedback);

    }

}

Dissecando:

  • Joana inicia a variável desejaFeedback como verdadeira;
  • Enquanto desejaFeedback for verdadeiro, mostra-se um prompt para o usuário inserir seu feedback;
  • Se o usuário cancelar ou enviar uma resposta vazia, a variável desejaFeedback define-se como false, encerrando o loop;
  • Caso contrário, registra-se o feedback (neste exemplo, é apenas mostrado no console, mas poderia ser enviado para um servidor).

Estes exemplos, portanto, ilustram a versatilidade do loop while em aplicações web, seja para processar e exibir dados ou interagir com o usuário. Estão prontos para testar diretamente no console do navegador ou em um arquivo HTML/JavaScript.

Precauções ao usar o loop while JavaScript

O poder e a flexibilidade do loop while em JavaScript são inegáveis. No entanto, é essencial abordar algumas precauções ao usá-lo para garantir que seu código seja eficiente e não cause problemas inesperados.

  1. Evite loops infinitos: o risco mais evidente ao usar um loop while é criar um loop infinito. Sempre tenha certeza de que a condição do loop será falsa em algum momento. Loops infinitos podem causar que seu programa fique paralisado ou que o navegador trave;
  2. Monitorar a performance: enquanto loops são úteis, eles também podem ser custosos em termos de performance, especialmente se processarem muitos dados ou realizarem operações complexas repetidamente. Monitore o desempenho do seu código e considere otimizações, se necessário;
  3. Cuidado com condições ambíguas: certifique-se, assim, de que a condição de seu loop seja clara e direta. Condições muito complexas ou ambíguas podem tornar seu código mais difícil de entender e manter.

Aplicações avançadas do loop while JavaScript

Além das aplicações básicas, o loop while pode ser usado em cenários avançados, especialmente quando combinado com outras funções e recursos do JavaScript.

  1. Integração com APIs: muitas vezes, ao trabalhar com APIs, é necessário buscar dados em lotes. Um loop while pode ser usado para buscar dados até que todos sejam recuperados, especialmente quando a API tem um limite de quantos dados podem ser buscados de uma só vez;
  2. Animações e jogos: em cenários onde é necessário repetir uma animação ou ação até que uma condição específica seja atendida (por exemplo, um objeto atingir um certo ponto na tela), o loop while pode ser útil;
  3. Algoritmos complexos: em ciência da computação, algoritmos que necessitam de repetições baseadas em condições dinâmicas (como busca binária ou algoritmos de ordenação) podem se beneficiar do loop while .

Conclusão

O loop while em JavaScript é uma estrutura de repetição essencial que permite a execução contínua de um bloco de código enquanto uma condição estabelecida for verdadeira. 

Esse loop é particularmente útil quando o número de iterações é determinado dinamicamente ou é desconhecido previamente. Para garantir a eficiência do código, é vital que a condição do loop possa tornar-se falsa em algum momento, evitando assim loops infinitos. 

Exemplos práticos incluem solicitar entradas de usuários até receber uma resposta válida ou processar conjuntos de dados em aplicações web até atingir um limite específico. 

Em comparação com outros loops, como o for e do...while, o while é, portanto, intuitivo para situações onde a repetição depende de condições externas ao loop. A seleção entre esses loops depende do contexto específico do problema e da familiaridade do desenvolvedor com a estrutura.

Considere ler também: 

Este artigo foi útil?

Obrigado pela resposta!
Daiana S

Daiana S

Graduada em Letras pelo Instituto Federal da Paraíba e especializada em redação geral. Gosto de escrever sobre tudo e me dedico em vários níveis de expressividade. No geral, todos os meus hobbies giram em torno de escrever alguma coisa e fazer isso bem.

Contato: daiana.blog@homehost.com.br

Ganhe 30% OFF

Indique seu nome e e-mail,e ganhe um cupom de desconto de 30% para sempre na Homehost!