Dollar sign before self declaring anonymous function in JavaScript?
What is the difference between these two:
$(function () {
// do stuff
});
AND
(function () {
// do stuff
})();
Solution 1:
The first uses jQuery to bind a function to the document.ready
event. The second declares and immediately executes a function.
Solution 2:
$(function() {});
is a jQuery shortcut for
$(document).ready(function() {
/* Handler for .ready() called. */
});
While (function() {})();
is a instantly invoked function expression, or IIFE. This means that its an expression (not a statement) and it is invoked instantly after it is created.
Solution 3:
They are both anonymous functions, but (function(){})()
is called immediately, and $(function(){})
is called when the document is ready.
jQuery works something like this.
window.jQuery = window.$ = function(arg) {
if (typeof arg == 'function') {
// call arg() when document is ready
} else {
// do other magics
}
}
So you're just calling the jQuery function and passing in a function, which will be called on document ready.
The 'Self-executing anonymous function' is the same as doing this.
function a(){
// do stuff
}
a();
The only difference is that you are not polluting the global namespace.