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

Escrevi um texto parecido, mas está aparecendo "undefined"

Escrevi esse código pra exercitar o assunto, mas quando executo aparece "undefined" duas vezes. Já reli várias vezes, mas não consigo encontrar o porque.

<meta charset="UTF-8">

<script>

    function break1() {

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

    function write(phrase){

        document.write(phrase);
        break1();
    }

    function computeImc(height, weight, name){

        var imc = Math.round(weight / (height * height));
        var complete = write("O IMC de " + name + " é: " + imc);
        return complete
    }

    var diogoImc = computeImc(1.78, 83, "Diogo");
    var joaoImc = computeImc(1.72, 78, "João");

    write(diogoImc);
    write(joaoImc);

</script>
3 respostas

Olá João,

Está aparecendo undefined porque na função computeImc você está retornando a variável complete, que recebe uma função void write antes de ser retornada.

Por isso que está ocorrendo esse erro.

João,

Para corrigir esse ponto você pode apenas retirar a chamada da função write de dentro da função computeImc e retornar apenas a string

function computeImc(height, weight, name){

        var imc = Math.round(weight / (height * height));
        var complete = "O IMC de " + name + " é: " + imc;
        return complete

}
solução!

O código completo ficará da seguinte forma:

<meta charset="UTF-8">

<script>

    function break1() {

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

    function write(phrase){

        document.write(phrase);
        break1();
    }

    function computeImc(height, weight, name){

        var imc = Math.round(weight / (height * height));
        var complete = "O IMC de " + name + " é: " + imc;
        return complete
    }

    var diogoImc = computeImc(1.78, 83, "Diogo");
    var joaoImc = computeImc(1.72, 78, "João");

    write(diogoImc);
    write(joaoImc);

</script>