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

O que há de errado com o código aqui?

Estou utilizando o comando return imc para que a função mostra() seja utilizada fora da função calculaIMC. Se eu tirar o 'return imc' e deixar o mostra() dentro da função calculaimc().. funciona. Porém, se eu tirar o mostra pra fora da função e usar o return imc, nao funciona.

<script>

function pulaLinha() {

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

function mostra (frase) {

    document.write(frase);
    pulaLinha();

}

//Função Calcula IMC

function calculaIMC(altura, peso) { 

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

}

calculaIMC(1.81, 118);
calculaIMC(1.65, 68); 

mostra("O IMC Calculado é "+ imc);


</script>
3 respostas
solução!

Hola Ricardo,

O return retorna a informação para onde ele foi chamado.

Quando você utiliza:

calculaIMC(1.81, 118);
calculaIMC(1.65, 68);

Significa que você ta tendo o return no calculaIMC que não está sendo guardado em lugar nenhum. Por isso não funciona.

Ao se retornar imc na função calculaIMC, não significa que imc agora é uma variável global que pode ser utilizada em qualquer lugar. Significa somente que a variável imc que foi modificada (e/ou criada) dentro da função, tinha um valor, e esse valor vai ser retornado para quem o chamou.

Para que você possa utilizar esse valor, você tem duas alternativas:

  • Primeira: guardar o retorno em uma variável
imc1 = calculaIMC(1.81, 118);
imc2 = calculaIMC(1.65, 68); 

mostra("O IMC Calculado é "+ imc1);
mostra("O IMC Calculado é "+ imc2);
  • Segunda: chamar a função onde você deseja imprimir o valor. O valor de retorno é utilizado diretamente:
mostra("O IMC Calculado é "+ calculaIMC(1.81, 118));
mostra("O IMC Calculado é "+ calculaIMC(1.65, 68));

"não significa que imc agora é uma variável global que pode ser utilizada em qualquer lugar."

Isso respondeu minha pergunta. Muitíssimo obrigado Priscila !

Final feliz então!!