What is the difference between these two:
$(function () {
// do stuff
});
AND
(function () {
// do stuff
})();
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.