Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is the purpose of the anonymous function wrapper in jQuery?

jQuery starts off wrapping all of it's code in an anonymous function:

(function ( window, undefined) {
   /*
   ...jquery code...
   */
}) (window);

I get that the function is executed immediately upon the entire script being read, but what is the purpose of the arguments? One is a global object reference, the other is a property reference.

Now, I remember that earlier in the script development, undefined actually got defined as something else (am I remembering that right?). Was that related to this?

Also, it looks like the function is being used as an operator? Just like it is above, I don't understand the syntax of the statement at all. Maybe there is context that would help?

like image 996
Dexter Avatar asked Jan 04 '11 21:01

Dexter


1 Answers

The wrapper does a number of things:

function(window,undefined)

provides the window and undefined variables to the function

the anonymous call })(window); passes the window variable to the script.

If a user overrides the window object, they will easily be able to modify the script to use the correct window variable i.e.:

(function(window,undefined){})(w);

The lack of a second parameter being passed sets the undefined variable to have a value of undefined which prevents a programmer from messing up jQuery by overriding undefined.

like image 143
zzzzBov Avatar answered Nov 15 '22 20:11

zzzzBov