1
resposta

[Dúvida] Condição para saída do laço no While, ocorre , mas não funciona.

Segue o código em Java script, onde a condição de saida do laço While ocorre, e mesmo assim, o While não interpreta como condição de saída e continua.

alert("Bem vindo ao Jogo do número secreto");
let numeroSecreto = 5;
let chute;

while (chute != numeroSecreto) {

let chute = prompt("Digite um número entre 1 e 10:");

if (chute == numeroSecreto) {

alert(`É isso aí você descobriu, o numero secreto é ${numeroSecreto}`);

} else {

  if (chute < numeroSecreto) {

   alert(`O numero ${chute} é menor que o numero secreto`); 
  } else {

  alert(`O numero ${chute} é maior que o numero secreto`);
  }

}
}

Garanta sua matrícula hoje e ganhe + 2 meses grátis

Continue sua jornada tech com ainda mais tempo para aprender e evoluir

Quero aproveitar agora
1 resposta

Olá amigo.
Você está re-declarando a variável chute com let dentro do loop while, o que cria uma nova variável local dentro do bloco do loop, diferente da variável chute do escopo mais externo, que é usada na condição do while.
Assim, a variável chute do while (chute != numeroSecreto) nunca é atualizada com o novo valor digitado, o que resulta em um loop infinito.
Basta remover o let dentro do while na variavel chute.
Código corrigido:

alert("Bem vindo ao Jogo do número secreto");
let numeroSecreto = 5;
let chute;

while (chute != numeroSecreto) {
//linha corrigida removendo let
  chute = prompt("Digite um número entre 1 e 10:"); // <- sem "let" aqui!

  if (chute == numeroSecreto) {
    alert(`É isso aí você descobriu, o numero secreto é ${numeroSecreto}`);
  } else {
    if (chute < numeroSecreto) {
      alert(`O numero ${chute} é menor que o numero secreto`); 
    } else {
      alert(`O numero ${chute} é maior que o numero secreto`);
    }
  }
}

Teste ai e avise o resultado.
E se minha resposta foi util pode marcar minha resposta como solução.
Bons estudos e comente ai qualquer duvida.
Até...