1
resposta

[Dúvida] Mensagem no alert dando (NaN) ou (undefined)

alert('Boas vindas ao jogo do número secreto');
let numeroSecreto = 5;
console.log(numeroSecreto);
let chute;
let tentativas;


while (chute != numeroSecreto) {
  chute = prompt('Escolha um número de 1 a 10');

  if (chute == numeroSecreto) {
    alert(`Isso ai! Você descobriu o número secreto ${numeroSecreto} com ${tentativas} tentativas.`);
  } else {
    if (chute > numeroSecreto) {
      alert(`O número secreto é menor que ${chute}`);
    } else {
      alert(`O número secreto é maior que ${chute}`);
    }
     tentativas++;
  }
}

essa é o código que eu usei, porém, quando vou dar um F5 para atualizar a pagina aparece no alerta "Isso ai! Você descobriu o número secreto 5 com (undefined) tentativas." ou "Isso ai! Você descobriu o número secreto 5 com NaN tentativas.", alguem poderia me falar o que pode estar de errado? Sou bem novo na area, porem, estou me divertindo bastante, agradeço desde já!

1 resposta

Oii, Jhonathan!

Que maravilha ver você se divertindo com a lógica de programação! É muito comum passar por esses detalhes no início, e é exatamente assim que a gente aprende: testando e ajustando.

O que está acontecendo é que a variável tentativas foi criada, mas não recebeu um valor inicial.

No JavaScript, quando declaramos let tentativas;, ela começa valendo undefined (indefinido). Quando o código chega na linha tentativas++, ele tenta somar 1 a algo indefinido, e o resultado matemático disso é NaN (Not a Number, ou "Não é um Número").

Como resolver:
Precisamos iniciar a variável com um valor numérico. Como o primeiro chute já conta como uma tentativa, vamos iniciá-la com 1.

alert('Boas vindas ao jogo do número secreto');
let numeroSecreto = 5;
console.log(numeroSecreto);
let chute;
let tentativas = 1; // AQUI: Começamos a variável com o valor 1

while (chute != numeroSecreto) {
  chute = prompt('Escolha um número de 1 a 10');

  if (chute == numeroSecreto) {
    // Agora a variável terá um número válido para mostrar aqui
    alert(`Isso ai! Você descobriu o número secreto ${numeroSecreto} com ${tentativas} tentativas.`);
  } else {
    if (chute > numeroSecreto) {
      alert(`O número secreto é menor que ${chute}`);
    } else {
      alert(`O número secreto é maior que ${chute}`);
    }
     tentativas++; // E conseguirá somar +1 aqui corretamente
  }
}

Agora a contagem vai funcionar direitinho. Continue com essa curiosidade e bons estudos!

Conteúdos relacionados
Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!