Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Curiosidade

No meu código abaixo, quando cancelo as entradas do prompt, a mensagem de retorno exibe"O null está pior que o ano passado.

FIM."

<meta charset="UTF-8">

<script>

    function pulaLinha() {

        document.write("<br>");

    }

    function exibeMensagem(frase) {

        document.write(frase);
        pulaLinha();

    }

    var time = prompt("Informe o nome do seu time.");
    var numeroPontos = prompt("Informe a quantidade de pontos do " + time + ".");

    if(numeroPontos > 10) {

        exibeMensagem("O " + "<strong>" + time + "</strong>" + " está <strong>melhor</strong> que o ano passado.")

    }

    if(numeroPontos < 10) {

        exibeMensagem("O " + "<strong>" + time + "</strong>" + " está <strong>pior</strong> que o ano passado.")

    }

    if(numeroPontos == 10) {

        exibeMensagem("O " + "<strong>" + time + "</strong>" + " está <strong>igual</strong> que o ano passado.")

    }

    exibeMensagem("FIM.");

</script>

Já quando utilizo o parseInt():

<meta charset="UTF-8">

<script>

    function pulaLinha() {

        document.write("<br>");

    }

    function exibeMensagem(frase) {

        document.write(frase);
        pulaLinha();

    }

    var time = prompt("Informe o nome do seu time.");
    var numeroPontos = parseInt(prompt("Informe a quantidade de pontos do " + time + "."));

    if(numeroPontos > 10) {

        exibeMensagem("O " + "<strong>" + time + "</strong>" + " está <strong>melhor</strong> que o ano passado.")

    }

    if(numeroPontos < 10) {

        exibeMensagem("O " + "<strong>" + time + "</strong>" + " está <strong>pior</strong> que o ano passado.")

    }

    if(numeroPontos == 10) {

        exibeMensagem("O " + "<strong>" + time + "</strong>" + " está <strong>igual</strong> que o ano passado.")

    }

    exibeMensagem("FIM.");

</script>

E cancelo as entradas do prompt, o resultado é: " FIM. " Analisando o console, a variável permanece como "null", mas a variável numeroPontos fica como NaN e portanto não entra em nenhuma comparação do if.

Se puderem esclarecer um pouco sobre o que acontece por "debaixo dos panos", agradeço.

2 respostas
solução!

Ao cancelar as entradas, o resultado passado à variável é null.

o null é "considerado", nesse contexto ao menor numero inteiro possível, logo null < 10 é considerado true, e ao imprimir o null aparece na frase.

Já quando tentar fazer parseInt(null) ele gera um NaN (Not a Number) que gera falso em todos os cenários de comparação com outro inteiro.

Entendeu?

Valeu Francisco, esclarecido!