Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Cabral Desenvolvedor

[Resolvido] Escrever funções de forma diferente

Recommended Posts

Boa tarde pessoal, estive notando em alguns scripts alguns códigos de funções escritos de maneiras diferentes.

 

Um exemplo é o do google analytics que vem escrito da seguinte forma:

 

(function(){bla bla blá})()

 

Alguém sabe me explicar o por que dessa função estar entre parênteses e no final ter mais 2 parênteses?

 

Outra forma que notei são funções escritas assim:

 

function(a){a.fn.hoverIntent=function(l,j){var m={sensitivity:7,interval:100,timeout:0};m=a.extend(m,j? ... e assim por diante, com várias variáveis sendo passadas do nada e com funções dependentes dela... Alguém saberia explicar isto também?

 

Atenciosamente, Douglas Cabral.

Compartilhar este post


Link para o post
Compartilhar em outros sites

(function(){ 

});

isso é uma função anônima (que não tem nome) [clousure]

 

 

(function(){ 

})();

isso é uma função anônima e autoexecutável. Os parênteses executam essa função.

Seria o mesmo(falando grossamente) que:

 

function a(){}
a();

 

Ok ?

 

 

 

A tua última pergunta é um misto de coisas, e então é meio complicado explicar tudo de uma só vez.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado Willian pela ajuda, eu imaginava justamente isto, uma função autoexecutável.

 

Agora e sobre um misto de coisas? Poderia citar algumas delas ou citar alguns links para que eu possa estar estudando ou pesquisando?

 

Atenciosamente, Douglas Cabral.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Por partes:

 

 

function(a)

a função recebe um argumento a

 

{a.fn.hoverIntent

esse a, pelo visto é um objeto que possui um método fn. Geralmente um atalho para o .prototype

 

.hoverIntent=function(l,j)

estou "extendendo" o objeto a, declarando um novo método chamado hoverIntent.

Ele recebe como argumento esse l e o j.

 

Dentro desse meu novo método, atribuo um jSON na variavel m.

 

 

Procure estudar sobre Javascript OO, jSON, clousures..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Em questão de JSON, clousures, etc sem problemas, quando você falou que tinham muitas coisas além do básico, achei que não era nada disso, na verdade o que eu não tinha entendido neste exemplo que eu dei é que é uma função anônima que recebe um objeto em seu parâmetro, porém esta função anônima não é autoexecutável pelo o que olhei no código, então o que me deixou confuso seria quando e como essa função anônima seria executada ou chamada no sistema.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ai só analisando o restante do script.

 

Vendo se essa função é um método de algum outro objeto, se já está em alguma clousure..

você postou apenas o fragmento, então por isso não sou capaz de dizer muito mais sobre o contexto dele.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então... este script eu achei dentro de uma pasta do WordPress, estava sem nada para fazer e então decidi estudar e tentar entender códigos de outras pessoas para aprimorar meus conhecimentos e este trecho era logo no inicio de um arquivo js, ou seja, abria o arquivo e já tinha este trecho sem estar enclausurado dentro de alguma função, objeto, etc...

 

Aproveitei então que eu também tinha aquela dúvida sobre função anônima autoexecutável e resolvi abrir este tópico no fórum.

 

Mas de qualquer forma obrigado pelas informações :thumbsup:

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.