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

O que tá dando confusão no meu passo além do exercício 12 (a idade do meu irmão)?

Olá, tentei exercitar tudo o que foi aprendido até aqui e fui um passo além do proposto. Quis mostrar inicialmente a minha idade, da minha irmã e só então mostrar a diferença usando as functions. Mas o resultado em tela é repetido e não entendi onde está ou o que explicaria o erro. Fiz um teste mudando os nomes das funções exibir e deu o resultado correto. Isso significaria que cada "ordem" é única e não pode ser repetida? Percebam que a função que se repete é a última função exibir.

Resultado: "Nossa diferença de idade Nossa diferença de idade é 33 anos. Nossa diferença de idade é 27 anos. Nossa diferença de idade é 6 anos."

<meta charset = "UTF-8">

<h2>Nossa diferença de idade</h2>

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

    function exibir(minhaIdade) {
        document.write("A minha idade é " + minhaIdade + " anos.");
    }

    function exibir(idadeIrma) {
        document.write("A idade da minha irmã é " + idadeIrma + " anos.");
    }

    function exibir(diferencaIdade) {
        document.write("Nossa diferença de idade é " + diferencaIdade + " anos.");
    }

    var minhaIdade = 33, idadeIrma = 27, diferencaIdade = minhaIdade - idadeIrma

 // Essa é somente a parte exibida para a outra pessoa:

    exibir(minhaIdade), pulaLinha();
    exibir(idadeIrma), pulaLinha();
    exibir(diferencaIdade), pulaLinha();

</script>
4 respostas
solução!

Ola, Carla

No seu código você estra definindo a function exibir 3 vezes.

function exibir(minhaIdade) {
    document.write("A minha idade é " + minhaIdade + " anos.");
}

function exibir(idadeIrma) {
    document.write("A idade da minha irmã é " + idadeIrma + " anos.");
}

function exibir(diferencaIdade) {
    document.write("Nossa diferença de idade é " + diferencaIdade + " anos.");
}

Com isso a ultima parte lida é a que vai ser chamada quando você chamar a função exibir. a função que será usada quando o programa for executado vai ser a 3ª porque foi a ultima a ser definida.

Talvez você confundiu o parâmetro das funções com as variáveis

A ideia de fazer uma função é não precisar repetir um trecho de código toda vez que você quiser usar ele, então é mais interessante criar uma função que só imprime na tela, como essa:

function exibir(texto) {
        document.write(texto);
}

E na hora de exibir você você passar como parâmetro ,texto, o texto que você quer imprimir desse jeito:

exibir("A minha idade é " + minhaIdade + " anos.");
pulaLinha();
exibir("A idade da minha irmã é " + idadeIrma + " anos.");
pulaLinha();
exibir("Nossa diferença de idade é " + diferencaIdade + " anos.");
pulaLinha();

"Talvez você confundiu o parâmetro das funções com as variáveis" provavelmente foi isso mesmo, já que até anotei no meu caderno "função = é tipo uma variável" rs.

Obrigada Nicolas, eu vou anotar o que você explicou e me atentar para não confundir mais o uso das funções. :)

Oi Clara.

Uma outra solução que você poderia usar é colocar os três document.write dentro da função exibir e criar uma função que recebe três parâmetros. Ficaria dessa forma:

<meta charset = "UTF-8">

<h2>Nossa diferença de idade</h2>

<script>
    // Criando a função pularlinha
    function pulaLinha() {
        document.write("<br>");
    }

    // Criando a função exibir que recebe três parâmetros(idade1, idade2, diferenca)
    function exibir(idade1, idade2, diferenca) {
        document.write("A minha idade é " + idade1 + " anos.");
        pulaLinha(); //sua função pular linha pode ficar aqui dentro da função exibir
        document.write("A idade da minha irmã é " + idade2 + " anos.");
        pulaLinha();
        document.write("Nossa diferença de idade é " + diferenca + " anos.");
        pulaLinha();
    }

    //Aqui você criaria as variáveis com as idades e a diferença
    var minhaIdade = 33;
    var idadeIrma = 27;
    var diferencaIdade = minhaIdade - idadeIrma;


 // Depois você chama a função e coloca as variáveis seguindo a ordem que foi usada na criação da função exibir (idade1 é a sua idade, idade2 é a da sua irmã e diferença ):
    exibir(minhaIdade, idadeIrma, diferencaIdade);

</script>

Espero ter ajudado.

Obrigada Bruno, gostei bastante da dica! :)