2
respostas

por que esse programa nao exibe o valor da variavel "resultado"?

<meta charset="UTF-8">
<script>
  function pulaLinha(){
    document.write("<br>");
  }
  function mostra(frase){

    document.write(frase);
    pulaLinha();
  }
  var resultado = minhaIdade - idadeIrmao;
  var minhaIdade = 29;
  var idadeIrmao = 19;

  mostra("A diferença é " + (resultado));

</script>
2 respostas

NaN significa: Not a Number (não é um número). Esse erro aparece quando tentamos operar (somar, subtrair...) com string. Por exemplo, "2" + 3 não é 5. Forçar operações dessa forma, sem ter certeza do tipo de dado pode gerar esse tipo de erro.

<meta charset="UTF-8">
<script>
  function pulaLinha(){
    document.write("<br>");
  }
  function mostra(frase){

    document.write(frase);
    pulaLinha();
  }

  var minhaIdade = 29;
  var idadeIrmao = 19;
  var resultado = minhaIdade - idadeIrmao;

  mostra("A diferença é " + (resultado));

</script>

O erro ocorreu por um processo interno do JS pelo fato de você ter escrito a variável RESULTADO como sendo a soma de valores que ainda não tinham sido definidos (quando a variável e criada e não recebeu ainda um valor o JS dá pra ela o status UNDEFINED = INDEFINIDO). Portanto sua variável RESULTADO recebeu a soma de duas variáveis undefined e virou undefined também, o que fez com que qualquer operação resultasse em undefined também. Teste o código acima, apenas coloquei na ordem. Não use uma variável antes de criá-la. Lembre que o processamento (interpretação) é linha a linha.

Olá, Vinicius! Tudo bem?

Nesse caso, o que está acontecendo é que as variáveis minhaIdade e idadeIrmao estão definidas apenas após a variável resultado. Ou seja, quando ele chega na linha var resultado = minhaIdade - idadeIrmao; o programa não encontra as variáveis minhaIdade e idadeIrmao para fazer a operação matemática.

Por isso é devolvido A diferença é NaN.

Como o Jobson disse, na programação NaN é um acrônimo em inglês para Not a Number, ou seja, Não é um Número.

Para conseguirmos o resultado esperado podemos alterar a ordem da declaração de variáveis. Veja:

var minhaIdade = 29;
var idadeIrmao = 19;
var resultado = minhaIdade - idadeIrmao;

Espero ter conseguido ajudar.

Estou à disposição para qualquer dúvida.

Abraços e ótimos estudos :)