Le signe du Dollar avant de déclarer la fonction anonyme dans JavaScript?
Quelle est la différence entre ces deux:
$(function () {
// do stuff
});
et
(function () {
// do stuff
})();
5 réponses
le premier utilise jQuery pour lier une fonction à l'événement document.ready
. La seconde déclare et exécute immédiatement une fonction.
$(function() {});
est un raccourci jQuery pour
$(document).ready(function() {
/* Handler for .ready() called. */
});
alors que (function() {})();
est une expression de fonction instantanément invoquée, ou IIFE. Cela signifie que c'est une expression (pas une déclaration) et qu'elle est invoquée instantanément après sa création.
est un jquery $(document).ready
fonction et l'autre est juste une fonction anonyme qui s'appelle elle-même.
ce sont deux fonctions anonymes, mais (function(){})()
est appelé immédiatement, et $(function(){})
est appelé lorsque le document est prêt.
jQuery fonctionne quelque chose comme ça.
window.jQuery = window.$ = function(arg) {
if (typeof arg == 'function') {
// call arg() when document is ready
} else {
// do other magics
}
}
donc vous appelez simplement la fonction jQuery et vous passez dans une fonction, qui sera appelée document prêt.
la "fonction anonyme auto-exécutante" est la même chose que celle-ci.
function a(){
// do stuff
}
a();
le la seule différence est que vous ne polluez pas l'espace de noms global.
$(function () {
// It will invoked after document is ready
});
cette exécution de fonction une fois que les documents sont prêts signifie que tout le HTML doit être chargé avant son exécution, mais dans le second cas, la fonction invoquée immédiatement après qu'il est créé.
(function () {
// It will invoked instantly after it is created
})();