Oi, Júlio!
Sim, quando você usa prompt
, o valor retornado é sempre uma string. O JavaScript faz uma conversão implícita quando você usa esse valor em uma operação que espera um número. No seu código:
let numeroMaximo = prompt("Digite um número para a contagem regressiva:");
while (numeroMaximo >= 0) {
console.log(numeroMaximo);
numeroMaximo--;
}
A comparação numeroMaximo >= 0
e a decrementação numeroMaximo--
forçam o JavaScript a converter automaticamente a string em número. Isso funciona, mas não é uma boa prática porque pode causar erros difíceis de identificar em casos mais complexos.
Para deixar o código mais seguro e claro, o ideal é converter logo após o prompt
. Ajuste seu código assim:
let numeroMaximo = parseInt(prompt("Digite um número para a contagem regressiva:"));
while (numeroMaximo >= 0) {
console.log(numeroMaximo);
numeroMaximo--;
}
Dessa forma, você garante que numeroMaximo
é um número inteiro, evitando qualquer conversão implícita inesperada.
Mas, no JavaScript temos outro operador, esse por sua vez compara o valor e o tipo, o que é bem melhor para restringir a sua comparação e deixar mais seguro a condição, esse operador é o "===" chamado de igualdade restrita. Recomendo utilizar ele em vez do "==" quando estiver desenvolvendo projetos em JavaScript.
Fico à disposição.