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

Dúvida no Ex. 7 da Aula 3 - Pratique resolvendo problemas do seu dia a dia

Boa noite,

Uma duvida ao declarar uma função qual a forma correta:

var minhaFuncao = function ( ){ bloco de codigo; };

ou

function minhaFuncao( ){ bloco de codigo; };

Nos dois casos ao precisar usar a função criada eu irei chama-la da mesma forma, mas qual a maneira correta de usar , eu particulamente acho que a segunda opção é a mais correta mas o curso ensinou a outra.

14 respostas

Ola, João Paulo Souza !

Você esta corretissssssimo qndo diz que ambas são corretas.

Em relação a como criar, depende do que vc precisa fazer.

Se precisa criar uma função e mais tarde passar para outra função:

var minhaFuncao = function ( ){ bloco de codigo; };

Se é uma função que vai ser usada somente chamando ela diretamente:

function minhaFuncao( ){ bloco de codigo; };

Abraço!

Boa tarde,

Muito obrigado pela resposta mas tenho uma outra dúvida, no primeiro caso quando crio uma variável para receber a função estou criando uma variável logo reservando espaço em memória para essa variável quando eu chamar essa função no programa eu posso ou não atribuir a outra variável caso queira armazenar o retorno desta função para aquela chamada, logo, terei dois armazenamentos em memoria, no segundo caso não eu escrevo a função e a deixo paradinha no script quando preciso usa-lá a invoco atribuindo a uma variável ou não, usando assim o armazenamento em memória uma vez para esta chamada, claro que estamos falando de um espaço irrelevante mas gostaria de saber se minha linha de raciocínio está correta ou não, o que você acha Cristiano de Oliveria?

Att.

Boa noite Cristiano de Oliveira , mais uma vez na aula posterior a essa que surgiu a dúvida tive a oportunidade de testar as duas opções que estávamos discutindo nesse registro, em um exercício testei trocar a forma de declaração da função e pude notar que em certos casos como na action de um botão em um script se declarar a função sem atribuir a variável o programa assim que lido irá executa-lá o que pode trazer um resultado inesperado, pois está só deve ser chamada ao clique do botão.Nesse caso a declaração atribuindo a uma variável é mais indicada, caso a chamada da função esteja fixa direto no html no atributo onclick do botão esta função poderá ser apenas declarada sem atribuição a uma variável, pois a chamada da mesma só será feita após o clique do botão.

Att.

Boa noite, parece brincadeira mas me surgiu uma nova dúvida ainda referente a forma de declarar funções no Javascript, no dois scripts:

E

O segundo tem um comportamento totalmente diferente por causa dos " ( )" parenteses na chamada da função, quando os parenteses são adicionador a chamada da função a mesma não obedece o evento onclick do Javascript e é executado imediatamente.Alguém sabe o pq?

Att.

Como edito meus posts o post anterior não era dessa forma.

Att.

E ae João, blz ?

Poderia postar esses dois exemplos que vc testou ?

Abraço!

Sim claro eu os tinha postado mas sei lá apareceu só os comentários não o script mas aqui vão eles.

e

Podemos notar que a unica mudança são os () parenteses ao fim do código que mudam totalmente quando executamos o mesmo.

Att.

Estou tentando postar o código mas o campo para resposta esta interpretando o script, e quando clico em responder ele vem vazio. Como post códigos aqui?

Att.

Joao !

Na janela que que vc digita o texto para postar, do lado direito tem dois botoes, [Expandir] [Formatar].

Da uma olhadinha no formatar que tem umas dicas de como postar o código e ele sair bem formatadinho.

<_meta charset="UTF-8">

<_input type="text" id="numero" />

<_input type="submit" value="Compare com o meu segredo"id="botao"/> <_script>

segredo = [8,9,10,11];

var caixaDoNumero = document.getElementById("numero");

var acertou = false;

function botaoClicado(){

for ( var x = 0; x < segredo.length; x++){ if( segredo[x] == caixaDoNumero.value ){ acertou = true; break; }; }; if(acertou == true){ document.write("Parabéns você acertou"); }else{ alert("Opa errou"); }

};

var botaoAdivinhar = document.getElementById("botao");

botaoAdivinhar.onclick = botaoClicado;

<_/script>

Se na ultima linha colocarmos um () parenteses assim, ocorre o comportamento indesejado.

botaoAdivinhar.onclick = botaoClicado ();

Acho que consegui rsrss.

Joao.

Quando chamamos o método assim:

botaoClicado ();

Estamos pedindo para ele executar esse método.

Quando atribuímos dessa forma:

botaoAdivinhar.onclick = botaoClicado ();

Estamos falando que somente ao executar o:

onclick

é para ele executar o método

botaoClicado ();

Abraço!

Boa tarde,

Mas ele só obedeçe se tiramos os (), caso esses sejam deixados ele executa o método no momento em que o script é lido pelo browser.

botaoAdivinhar.onclick = botaoClicado ();--> browser vai executar instantaneamente, resultado inesperado.

botaoAdivinhar.onclick = botaoClicado ; --> espera o evento do botão.

Att.

solução!

Muito bem Observado, Exatamente isso João !

Quando vc usar o () ele vai executar, pq estamos mandando que ele execute instantaneamente o método.

Quando não usamos o () estamos falando para ele executar, SOMENTE ao clicar no botão.

Estamos atribuindo o click do botão a esse método.