Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] Variavel não definida - Calculo do IMC

Pessoal, boa tarde!!

Estou fazendo o código do IMC nas aulas do prof Flavio, mas minha variavel (imc) não é lida pelo JS, alguem sabe o que pode ser? Segue o cod:

<meta charset="UTF-8">

<script>

        function pulaLinha() {

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

        function mostra(frase) {

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

        function calculaImc (peso, altura) {

            var imc = peso / (altura * altura);

        }

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

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

</script>
1 resposta
solução!

Oii Shayane, tudo bem?

O que está acontecendo é um problema relacionado ao escopo de variáveis. Isso é, onde as variáveis são enxergadas. Quando declaramos uma variável dentro de um bloco, ela só pode ser enxergada dentro deste bloco e em seus sub-blocos, e não nos blocos superiores à ela.

Nesse caso, a variável imc está sendo declarada dentro da função calculaImc(), e por este motivo ela só é acessível dentro deste bloco de função, e ao tentar mostrá-la no console o JavaScript não consegue encontrá-la. Para resolver isso, podemos fazer de duas maneiras:

1 - Incorporar dentro da função, a parte onde é mostrado na tela o valor calculado:

function calculaImc (peso, altura) {

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

Agora, estamos dentro do mesmo bloco e a variável é visível.

2 - Retornar o valor calculado na função, e utilizar esse retorno para mostrar na tela:

function calculaImc (peso, altura) {

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

mostra("O imc calculado é " + calculaImc(peso, altura));

Assim, utilizamos o valor de retorno da função para mostrar na tela qual o valor calculado!

Em caso de dúvidas, estou à disposição!

Um grande abraço e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!