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

04 Crie suas próprias funcionalidades( exercício 12 A idade do meu irmão)

No começo fiz e ficou bem parecido com o da descrição do vídeo;

Depois quis ver se eu conseguia facilitar um pouco criando uma nova função ou variável, más não deu certo,por que?

<meta charset=  "UTF-8">
<script>
function pulaLinha(){
    document.write("<br>");
}
function mostra(escreve){
    document.write(escreve);
    pulaLinha();
}

var idadeIrmã=37;
var minhaIdade=35;
var diferençaIdades=(idadeIrmã-minhaIdade);

function nossaDiferençaIdades(escreve){
    mostra(escreve);
    pulaLinha();
    var diferençaIdades;
}


nossaDiferençaIdades("Nossa diferença de idades é de:");

//****************************************************************
//segunda tentativa:
******************************************************************
var resuntado=mostra("Nossa diferença de idades é")+pulaLinha()+diferençaIdades;

mostra(resuntado)
</script>
8 respostas

Provavelmente porque a declaração dos nomes das variáveis e do método possui caracteres que não são permitido pela linguagem. Ex:

var idadeIrmã=37;
function nossaDiferençaIdades(escreve)

Tente assim:

var idadeIrma=37;
function nossaDiferencaIdades(escreve)

Não, não foi isso que aconteceu. tentei retirando esses caracteres e continuou do mesmo jeito.

solução!

Boa noite, Rita! Não pode colocar caracteres especiais nas variáveis, mas tem um problema também, quando você cria uma função com o document.write, você perde o contexto que é o de document e isso faz com que ocasione um error. (CASO TENHA FALADO BESTEIRA, PESSOAL ME CORRIJAM, POR FAVOR.) document é uma propriedade do document é necessário colocar as informações dentro dessa função, por exemplo concatenar. O código abaixo está funcionando, dê uma olhada.

<meta charset=  "UTF-8">
<script>
function pulaLinha(){
    document.write("<br>");
}
function mostra(escreve){
    document.write(escreve);
    pulaLinha();
}


function nossaDiferencaIdades(escreve){
    mostra(escreve);
    pulaLinha();
    var diferencaIdades;
}

function diferencaIdades(idade1,idade2){
    return idade1 - idade2;
}



//****************************************************************
//segunda tentativa:


var idadeIrma  = 37;
var minhaIdade = 35;
var diferenca = diferencaIdades(idadeIrma,minhaIdade);


var resultado = document.write("Nossa diferença de idades é " + diferencaIdades(idadeIrma,minhaIdade));

</script>

Rita, essa função nossaDiferençaIdades não tá fazendo muito sentido. O que ela deveria fazer?

Perceba, também, que a função pulaLinha não faz sentido, já que a função mostra faz a mesma coisa da pulaLinha.

Também não há como somar ou concatenar funções que não retornam valor algum com variáveis, como nesse trecho:

+pulaLinha()+diferençaIdades;

Faltou comentar as **

<meta charset=  "UTF-8">
<script>
function pulaLinha(){
    document.write("<br>");
}
function mostra(escreve){
    document.write(escreve);
    pulaLinha();
}

var idadeIrma=37;
var minhaIdade=35;
var diferencaIdades=(idadeIrma-minhaIdade);

function nossaDiferencaIdades(escreve){
    mostra(escreve);
    pulaLinha();
    var diferencaIdades;
}


nossaDiferencaIdades("Nossa diferença de idades é de:");

//****************************************************************
//segunda tentativa:
//******************************************************************
var resuntado=mostra("Nossa diferença de idades é")+pulaLinha()+diferencaIdades;

mostra(resuntado);
</script>

O código acima funciona mas possui alguns erros de lógicas. Por exemplo em var resultado você está fazendo uma operação aritmética que é somar duas funções (mostra e pulaLinha) com um numero que está em diferencaIdades, assim acaba não apresentando o valor esperado. Se você deletar essa linha do var resultado e na última linha em vez de mostrar(resultao) colocar mostrar(diferencaIdades), quando você executar o programa irá mostrar a diferença das idades.

OK, vamos pensar dá seguinte forma: Digamos que os caracteres estejam corretos na forma convencional. E que esse pulaLinha() ai está ai de gaiato já que o mostra já contém um pulaLinha(), certo...

A questão é, a Concatenação do mostra com a função diferencaIdades. Entende?

Então, Rita! Como havia dito, você teria que utilizar outras abordagens para fazer isso, porque você está tentando acessar um contexto que é perdido quando você chama a função.

Vamos lá, quando você coloca: document.write("algo"); vocÊ diz que a propriedade write é do contexto document e isso se perde quando você coloca o document.write("") em uma função. Existe a abordagem do .bind, mas isso vai um pouco além do javascript, pois é no ECMAscript 5!

Não sei se consegui passar, você compreende?

entendi, o return idade1 - idade2; ok. obrigada pela dica...