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?
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?
Share Improve this question edited Jul 25, 2011 at 10:10 skaffman 404k96 gold badges824 silver badges775 bronze badges asked Jan 4, 2011 at 21:13 DexterDexter 2452 gold badges4 silver badges17 bronze badges 1- It's the code from jQuery: code.jquery./jquery-1.4.4.js – Dexter Commented Jan 4, 2011 at 21:21
1 Answer
Reset to default 11The 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
.