2010-05-28 5 views
23

Les hypothèses suivantes sont-elles exactes?jquery significations de déclaration de fonction anonyme

1) exécuter immédiatement

(function(){ 
})(); 

2) execute sur le document prêt

$(document).ready(function(){ 
}); 

3) un raccourci pour le document prêt

$(function(){ 
}); 

4) sténographie alternative pour le document prêt pour éviter les conflits inter-scripts

(function($) { 
})(jQuery); 
+1

Le dernier est souvent utilisé pour définir les plugins. –

+0

Modifié votre numérotation pour lui donner un format de code plus agréable, markdown n'aime pas le code directement sous les chiffres pour une raison quelconque :) –

+0

Cheers Nick, gentil –

Répondre

19

Oui vos définitions sont correctes, pour les 3 premiers :)

Bien que, à moins que vous avez besoin d'une fermeture, une déclaration sera exécutée immédiatement, aucune raison de l'envelopper comme # 1 a (il y a certainement beaucoup de temps valide, vous avez besoin d'une fermeture, juste en notant si vous n'avez pas ... c'est superflu).

n ° 4 est cependant pas correct, (function($) { })(jQuery); est pas lié à un événement, il est juste une fermeture de telle sorte que $ === jQuery l'intérieur de celui-ci, de sorte que vous pouvez utiliser le raccourci $:

(function($) { 
    //You may use $ here instead of jQuery and it'll work...even if $ means 
    //something else outside of this closure, another library shortcut for example 
})(jQuery); 
+0

Réponse très informative. Le numéro 4 est-il principalement utilisé juste au cas où $ a été écrasé dans la portée globale puisque le fichier jQuery a été chargé? –

+4

@ yaya3 - Oui, généralement à la suite de ['.noConflict()'] (http://api.jquery.com/jQuery.noConflict/) pour permettre à une autre bibliothèque de contrôler '$'. Cependant si vous vouliez 'document.ready' et pas de conflits, il y a aussi une version courte, jQuery se passe comme un paramètre au gestionnaire prêt donc' jQuery (document) .ready (function ($) {}); le plus court 'jQuery (function ($) {})' obtient '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''. sympa et soigné. Ou utilisez un autre nom :), par ex. 'jQuery (fonction (myVar) {myVar ('# myElem'). hide();});' –

+0

Génial, appris beaucoup ici. Merci –

9

Voici le # 4 vous étaient à la recherche pour:

jQuery(function ($) { 
}); 

Il se déroulera sur document.ready, dans un espace de noms, et avec jQuery défini comme $.

+0

brillante façon d'écrire cela qui nous donnera la puissance de $ sans inconvénient. – rncrtr

Questions connexes