Executa uma instrução ate que uma condição especifica seja verdadeira.

Visão geral

No while um bloco de código é executado ate que um teste condicional se torne falso, sendo importante lembrar que a condição analisada para a execução do laço de repetição deverá retornar um valor booleano. Por exemplo:

let salario = 1000

while (salario < 5000) {
  salario += 100

  console.log("O salário ainda é R$" + salario)
}

Perceba que o bloco de código dentro do while foi executado até que a condição salario < 5000 se tornasse falsa permitindo ao código continuar o fluxo normal da aplicação.

É possível também fazer com que o while execute ao menos uma vez seu bloco de código utilizando a instrução do..while. Por exemplo, considere que haja um bloco de instruções em um software para definir o aumento de salário dos funcionários de uma empresa e validar os que estão abaixo da média, colocando-os na base global de aumento como podemos ver abaixo:

let aumento = 500

do {
  console.log("O salário ainda é R$" + salario)

  aumento += 50
} while (aumento < 500)

Perceba que mesmo que a condição seja falsa o bloco de código será executado ao menos uma vez.

Sintaxe

while (expressao)
  instrucao

// ou

do
  instrucao
while (expressao)
  • instrucao: bloco de código executado dentro do while.
  • expressao: condição avaliada para a execução do bloco.

Na prática

Exemplo 1

Neste exemplo vamos utilizar o while para criar um contador que irá incrementar um número até que ele tenha valor igual a 50.

let contador = 0

while (contador < 50) {
  console.log(`repetição nr $`)

  contador++
}

Exemplo 2

No exemplo abaixo temos um Array com uma lista de cores e precisamos saber o nome e valor de cada uma das suas propriedades.

const cores = [
  'Verde',
  'Amarelo',
  'Azul',
  'Branco'
]

let index = 0

while (index < cores.length) {
  console.log(index, cores[index])
  index++
}

// 1 'Verde'
// 2 'Amarelo'
// ...

Exemplo 3

No exemplo a seguir demonstramos como somar todos os valores de um Array:

const produtos = [
  { descricao: 'Resma Ofício', valor: 11.50, quantidade: 10 },
  { descricao: 'Lapis preto', valor: 0.50, quantidade: 3 },
  { descricao: 'Transferidor plastico', valor: 1.20, quantidade: 4 }
]

let total = 0
let index = 0

while (index < produtos.length) {
  const { valor, quantidade } = produtos[index]

  total += valor * quantidade
  index++
}

console.log(total)
// 121.3

Exemplo 4

Neste exemplo vamos percorrer uma lista de números e exibir no console o valor de cada um de seus itens.

const numeros = [ 10, 11, 22, 23, 34, 45, 66, 17, 28, 93, 101 ]

let index = 0

while (index < numeros.length) {
  console.log('numero atual %s: ', numeros[index])
  index++
}

Exemplo 5

No exemplo abaixo temos uma lista de carros e precisamos calcular a soma de valor de todos os itens. Podemos solucionar este problema da seguinte forma.

const carros = [
  { id: 1, modelo: 'Corsa', marca: 'Chevrolet', preco: 18000 },
  { id: 2, modelo: 'Punto', marca: 'Fiat', preco: 12000 },
  { id: 3, modelo: 'Gol', marca: 'Volkswagen', preco: 14000 },
  { id: 4, modelo: 'Saveiro', marca: 'Volkswagen', preco: 20000 },
  { id: 5, modelo: 'Uno', marca: 'Fiat', preco: 12000 }
]

let total = 0
let index = 0

while (index < carros.length) {
  total += carros[index].preco
  index++
}

// converte o número para o padrão monetário
const valorFinal = Number(total).toLocaleString('pt-BR', {
  style: 'currency',
  currency: 'BRL'
})

console.log(valorFinal)
// R$ 76,000.00

Compatibilidade

Engine Versão Minima
Node.JS ( V8) qualquer
Safari ( WebKit) qualquer
Chrome ( V8) qualquer
Microsoft Edge ( ChakraCore) qualquer
Firefox ( Gecko) qualquer

Nota: O Opera utiliza atualmente grande parte do código do Chrome como base para o seu próprio desenvolvimento e por isso ele não é mencionado nesta listagem.