4
respostas

Alguém me explica detalhadamente porque chamar o "mostra" fora da função ele não consegue exibir o valor do imc?

4 respostas

Também estranhei isso. E aliás a função parece pior do que a forma utilizada anteriormente com as variáveis. Ao utilizar a função você reduz linhas do código porém fica fixo a uma frase pronta com o "mostra" sem especificar nomes cada pessoa e seu IMC como estava sendo feito antes...

Olá Gabriel e André. Tudo certo?

Nesta aula ainda não aprendemos a declaração return de uma função.

Como o próprio nome já diz, o return define o valor a ser retornado de uma função. Se quiser saber mais sobre return confere aqui [https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Statements/return](link devoloper mozilla)

Voltando ao seu problema. Se no lugar de var imc = peso / (altura * altura);, usarmos return imc = peso / (altura * altura); já é possível chamar a função mostra() fora da funçãocalculaImc().

Mantendo a estrutura ensinada na aula o código poderia ficar assim:

<script>

    function pulaLinha() {
        document.write("<br>");
    }

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

// Função para cálculo do IMC
    function calculaImc(peso, altura) {
        return imc = peso / (altura * altura); 
    }

// Variáveis para calcular IMC
    var pesoFlavio = 73;
    var alturaFlavio = 1.71;
    var imcFlavio = calculaImc(pesoFlavio, alturaFlavio);

    var pesoAmigo = 68;
    var alturaAmigo = 1.72;
    var imcAmigo = calculaImc(pesoAmigo, alturaAmigo);

// Chamando função mostra para exibir no HTML
    mostra("O imc do Flávio é " + imcFlavio);
    mostra("O imc do amigo do Flávio é " + imcAmigo);


</script>

Continuando o curso vi que o professor explicou o assunto no vídeo da atividade 05 - Retorno de funções da aula 05 - Pratique resolvendo problemas do seu dia a dia. https://cursos.alura.com.br/course/logica-programacao-javascript-html/task/17705