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

Função executa sem o return

Minha Função retorna o imc sem usar o return. É normal isso?

5 respostas

Boa tarde, Victor! Como vai?

Cola aqui o código da sua função para que seja possível dar uma olhada e te ajudar a entender o que está acontecendo.

Gabriel, veja só. Alterei o programa do IMC e não estou encontrando versão anterior. Mas veja esse com uma função que calcula a subtração de dois números. Não utilizo o return e calcula corretamente. Observo que diferente do Instrutor também não declaro resultado como var dentro da função. Mas depois a chamo e o cálculo acontece corretamente.

<meta charset="UTF-8">

<script>

    // Funcao para pular linha
    function jump() 
    {
        document.write("<br><br>");
    }

    // Funcao SUBTRACAO de dois numeros
    function subtracao(a,b)
    {
        resultado = a - b;
    }

    var num1 = 0;
    var num2 = 0;

    var num1 = prompt("Digite o primeiro número: ");
    var num2 = prompt("Digite o segundo número: ");
    subtracao(num1,num2);
    document.write(num1 + " - " + num2 + " = " + resultado);

</script>
solução!

Victor, esse comportamente está acontecendo justamente pq vc não está fazendo como o instrutor fez o que está acarretando nesse problema! Ao criar a variável resultado sem usar a palavra reservada var o Javascript vai criar uma variável global, por isso o seu código está funcionando. No entanto, criar variável global não é uma boa prática por permitir que elas sejam acessadas e modificadas em qualquer parte do nosso código, mtas vezes acarretando em erros ou em comportamentos não esperados como vc acabou de experimentar.

Quando vc passar a fazer da forma correta:

function subtracao(a, b) {
     var resultado = a - b;
}

Vc vai perceber que seu código deixará de funcionar e que vc terá que fazer alguns ajustes para deixar o código da forma como foi visto em aula, onde um desses ajustes, será acrescentar o return:

function subtracao(a, b) {
     var resultado = a - b;
     return resultado;
}

Gabriel, Perfeito.

Muito Obrigado!

Por nada, Victor!

Sempre que tiver alguma dúvida é só mandar pro pessoal aqui no fórum!

Grande abraço e bons estudos!