Dollar signe-t-il une fonction anonyme auto-déclarante en JavaScript?

Quelle est la différence entre ces deux:

$(function () { // do stuff }); 

ET

 (function () { // do stuff })(); 

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. */ }); 

While (function() {})(); Est une expression de fonction appelée instantanément, ou IIFE. Cela signifie que c'est une expression (pas une déclaration) et elle est invoquée instantanément après sa création.

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

Ils sont à la fois des fonctions anonymes, mais (function(){})() s'appelle immédiatement et $(function(){}) est appelé lorsque le document est prêt.

JQuery fonctionne 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 passez une fonction qui sera appelée sur le document prêt.

La «fonction anonyme auto-exécutable» est la même que cela.

 function a(){ // do stuff } a(); 

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 la fonction une fois que les documents se sont préparés signifie que le HTML entier devrait être chargé avant son exécution, mais dans le second cas, la fonction invoquée instantanément après sa création.

 (function () { // It will invoked instantly after it is created })();