1
resposta

olha o cálculo do imc novamente

Laercio deveria ter colocado a instrução return.

apesar de eu entender que faltou o return, pela lógica do exercício após a aula. Ainda acho um pouco confuso.

1 resposta

Olá Fabrizio! Tudo bem?

Sua dúvida é a respeito de como o return funciona?

Utilizamos o return para devolver uma "resposta" ou um "resultado" da nossa função.

Vamos entender melhor com o exemplo abaixo:

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

    function mostra(frase) {
        document.write(frase);
        pulaLinha();
    }

    <!-- Esta função não está nos retornando um resultado -->
    function calculaImc(altura, peso) {

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

    var imcCalculado = calculaImc(1.77, 75);
    mostra("O meu IMC é : " + imcCalculado);
</script>

Se não utilizamos o return, como no exemplo acima... nosso código é executado, mas nossa função calculaImc irá executar o cálculo, e não nos devolverá o resultado. Então na maneira como o código está acima, a variável imcCalculado não receberá o resultado da função calculaImc.

 

Para entender melhor o efeito do return, imagine que nossa função é uma calculadora... na maneira que ela trabalha sem o return, é como se passássemos uma conta para ser solucionada, mas após solucionar a conta, ela simplesmente não nos exibe o resultado na sua tela, guardando para si mesma.

Se utilizamos uma função que deve nos retornar um resultado, obrigatóriamente teremos que utilizar o return, caso contrário a função irá guardar para ela o resultado que precisamos. Veja o exemplo abaixo, com o nosso código que anteriormente não devolveria o resultado da função calculaImc, mas dessa vez utilizando o return:

<meta charset="UTF-8">
<script>

    <!-- Esta função não necessita do uso de return -->
    function pulaLinha() {
        document.write("<br>");
    }

    function mostra(frase) {
        document.write(frase);
        pulaLinha();
    }

    <!-- Agora nossa função calculaImc possui o retorno que esperavamos -->
    function calculaImc(altura, peso) {

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

    var imcCalculado = calculaImc(1.77, 75);
    mostra("O meu IMC é : " + imcCalculado);
</script>

Agora a nossa função calculaImc nos retorna o valor que esperávamos, mas percebeu que as outras duas funções não utilizam o return?

Existem funções que não possuem o objetivo de nos dar um resultado... são funções que simplesmente executam um papel, como a nossa função pulaLinha. Perceba que o objetivo dessa função não é realizar qualquer tipo de cálculo e nos devolver a resposta, mas sim executar o código que está em seu escopo (dentro da função).

A explicação foi clara?

Se continuar com dúvidas, é só falar 😄