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
})();
35
demandé sur AakashM 2011-09-30 22:31:54

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.

46
répondu g.d.d.c 2011-09-30 18:33:51

$(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.

21
répondu voigtan 2011-09-30 19:27:15

est un jquery $(document).ready fonction et l'autre est juste une fonction anonyme qui s'appelle elle-même.

4
répondu nathan gonzalez 2011-09-30 18:52:00

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.

3
répondu timrwood 2011-09-30 18:47:27
$(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
})();
1
répondu shekhardtu 2016-11-16 08:15:49