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

Função não listada

Quando eu rodo meu código a saída dele esta muito entranha. segue código

<meta charset="UTF-8">

<script> 

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

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

function diferencaIdades() {

    document.write(idadeAndre - idadeBruno);
}

var idadeAndre = 25;
var idadeBruno = 30;

mostra("Nossa diferença de idade é " + diferencaIdades());

</script>

A saída do meu código esta saindo assim: " -5Nossa diferença de idade é undefined".

Não consigo entender pq ele em da o resultado mas em uma lugar que eu não coloquei e depois ele me da um "underfined" sendo que ele deu o resultado mas em um lugar diferente.

O que estou fazendo de errada na função?

Sendo que ser eu colocar o função fora o "mostra" ela funciona certinho, segue código:

<meta charset="UTF-8">

<script> 

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

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

function diferencaIdades() {

    document.write(idadeAndre - idadeBruno);
}

var idadeAndre = 25;
var idadeBruno = 30;

mostra("Nossa diferença de idade é ");
diferencaIdades()

</script>

Resultado desse código: Nossa diferença de idade é

-5

4 respostas
solução!

Bom dia André, tudo bem? Espero que sim!

Isso acontece porque sua função executa um write, que serve para escrever na tela.

Existe uma declaração da função que se chama return, ela serve para retornar alguma coisa quando a função é chamada. Quando não se escreve esse return, o retorno da função é indefinido, por isso apareceu para você undefined.

Você pode mudar a sua função para que retorne o valor da diferença da idade. Assim sempre que a função for chamada dentro de um write, retornará o valor da operação:

function diferencaIdades() {
    return idadeAndre - idadeBruno;
}

Dessa forma, executando o seu código, irá funcionar:

mostra("Nossa diferença de idade é " + diferencaIdades());

Espero que tenha tirado sua dúvida.

Estou à disposição. Bons estudos!

Legal, eu realmente tentei resolver usando função o que não era o que o gabarito tinha proposto, o exercício tinha proposto resolver com "var" que pensando bem era mais fácil mesmo.

Segue código resolvido com "var":

<meta charset="UTF-8">

<script> 

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

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


var idadeAndre = 25;
var idadeBruno = 30;

var diferenca = idadeBruno - idadeAndre;

mostra("Nossa diferença de idade é " + diferenca);


</script>

Mas queria saber que seria melhor nessa ocasião, é sempre melhor usar ferramentas otimizadas?

Tipo nesse caso era melhor eu ter pensado em resolver com "var" des do inicio do que usar a função que é uma ferramenta um pouco mais complexa?

Nessa ocasião específica a variável atenderia melhor, por se tratar de uma operação simples, com uma única linha de execução.

A função tem a vantagem de executar várias linhas de código, podendo ter condicionais e loops que modifiquem o retorno da função. É indicada também para não repetir blocos de código que fazem a mesma coisa. Você verá os condicionais e loops mais adiante nesse mesmo curso que está fazendo.

Legal obrigado pelas dicas.