2011-03-28 4 views
2

je vois dans beaucoup de scripts ce modèleJavascript expliquer ce code s'il vous plaît

(function(){})(); 

Qu'est-ce et pourquoi l'utiliser?

+0

Il s'agit essentiellement d'une fonction anonyme. voir ici pour plus de détails http://stackoverflow.com/questions/1140089/how-does-an-anonymous-function-in-javascript-work – ashishjmeshram

Répondre

4

Utilisé pour forcer la création d'une portée locale, il évite de poluer la portée actuelle (souvent globale) avec les déclarations.

Il pourrait être réécrite comme si vous voulez éviter la fonction anonyme:

var scope = function() { /*...*/ }; 
scope(); 

Mais la syntaxe de fonction anonyme l'avantage que la portée mère ou mondiale même pas poluted par le nom du fonction.

(function() { /*...*/ })(); 

Il est aussi une bonne façon de mettre en œuvre la dissimulation d'information en javascript comme des déclarations (fonctions et variables) dans ce champ ne sera pas visible de l'extérieur. Mais ils pourraient encore se voir et comme les fonctions de fermeture d'implémentation javascript déclarées à l'intérieur d'une telle portée auront accès à d'autres déclarations dans la même portée.

1

Cela définit une fonction sans nom et l'appelle immédiatement. Parce que les fonctions Javascript agissent comme fermetures - une portée persistante - c'est un moyen utile de créer un ensemble d'objets ou de fonctions interconnectés.

1

Une fonction anonyme est une fonction (ou un sous-programme) définie, et éventuellement appelée, sans être liée à un identifiant.

1

Ceci est la syntaxe de base pour créer une fermeture. Plus généralement, il avait contient un code:

(function(){ 
    //Your Code Here 
})(); 

Cela équivaut à

var some_function = function() { 
    //Your Code Here 
}; 
some_function(); 

La principale raison pour ce faire est la propreté; toutes les variables déclarées en dehors de toute fonction sont globales; Cependant, les variables déclarées à l'intérieur de cette fonction sont contenues à l'intérieur de cette fonction et n'affecteront pas ou n'interagiront pas avec un code en dehors de la fonction. C'est une bonne pratique d'envelopper n'importe quel type de plugin réutilisable dans une fermeture.

1

Il exécute immédiatement une fonction anonyme. Il est essentiellement le même que:

var test = function(){}; 
test(); 

mais ne nécessite pas l'utilisation de la variable supplémentaire. vous devez l'insérer dans une parenthèse supplémentaire pour obtenir la fonction à la suite de votre expression - sinon, elle est comprise comme une déclaration de fonction, et vous ne pouvez pas exécuter une déclaration.

il est principalement utilisé pour la protection de la portée - parce que JS a une portée fonctionnelle, chaque variable définie comme var x; à l'intérieur de cette fonction sera conservée dans sa fonction portée locale. Tout cela signifie simplement «exécuter immédiatement tout ce qui se trouve dans cette fonction sans polluer l'étendue globale».

Il est également couramment utilisé dans des motifs bien connus, tels que le motif de module et le motif de module révélateur. S'il vous plaît voir http://www.adequatelygood.com/2010/3/JavaScript-Module-Pattern-In-Depth pour plus de détails.

0

Il est appelé une fonction immédiate ou une fermeture anonyme et est la base de the module pattern.

Il est utilisé pour créer une portée locale privée pour le code.

Questions connexes