2
respostas

Dúvida

Porquê que quando eu chamo a função "mostra" da erro no imc como " not defined"

<meta charset="UTF-8">

<script>

    function pulaLinhas(){

            document.write("<br> <br>")
    }

   function mostra (frase){

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

   function calculaImc (peso , altura){

          var imc = peso / (altura * altura)

   }

   calculaImc(73, 1.71);
   calculaImc(68, 1.71);
   mostra("O imc calculado é" + imc);


</script>

ai quando eu coloco ela dentro da função, funciona corretamente?

<meta charset="UTF-8">

<script>

    function pulaLinhas(){

            document.write("<br> <br>")
    }

   function mostra (frase){

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

   function calculaImc (peso , altura){

          var imc = peso / (altura * altura)
          mostra("O imc calculado é" + imc);
   }

   calculaImc(73, 1.71);
   calculaImc(68, 1.71);


</script>
2 respostas

Oi Lucas, como vai?

O problema está relacionado ao escopo das variáveis.

   function calculaImc (peso , altura){

          var imc = peso / (altura * altura)

   }

   calculaImc(73, 1.71);
   calculaImc(68, 1.71);
   mostra("O imc calculado é" + imc);

A variável "imc" só existe localmente dentro da função "calculaImc", sendo assim não é possível acessá-la fora da função.

minha sugestão para este caso é retornar o valor calculado pela função, ficaria assim:

   function calculaImc (peso , altura){

        var imc = peso / (altura * altura)
        return imc;
   }

e para utilizá-la:

    var imc1 = calculaImc(73, 1.71);

assim o valor calculado será armazenado na variável imc1, podendo ser utilizada pra imprimir o valor no console:

mostra("O imc calculado é" + imc1);

Espero que tenha conseguido entender, mas sei ficou alguma dúvida é só falar;

Abraço!

Variaveis declaradas no escopo da função, não podem ser acessadas fora do escopo da função. Por isso, se você usar o mostra, que está concatenado com a variável "imc", fora da função ele apresentará o erro dizendo que a variavel "imc" não está definida.