10

I noticed that in the jQuery core, one of the two arguments passed in is undefined.

(function( window, undefined ) {

    // Use the correct document accordingly with window argument (sandbox)
    var document = window.document;
    var jQuery = (function() {
        // ...defintion of the rest of the core...
    window.jQuery = window.$ = jQuery;
})(window);

Can anyone explain why the second argument is undefined?

Thanks in advance!

maximus
  • 2,307
  • 4
  • 37
  • 55
  • 3
    Because undefined can be overwritten and this way it is guaranteed to be undefined... My opinion. – mhitza Mar 22 '11 at 17:21
  • 3
    Because Resig wanted to see how many people he could get to ask about it on Stack Overflow. – Wayne Mar 22 '11 at 18:02
  • 1
    possible duplicate of [jQuery question: what does it really mean?](http://stackoverflow.com/questions/5305634/jquery-question-what-does-it-really-mean) – hjpotter92 May 24 '13 at 11:58

2 Answers2

2

Undefined is a type but is also a global variable.

You can have a module that overwrites the value of undefined by doing undefined = whatever.

jQuery uses a immediate function to scope window and undefined.

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/undefined

masylum
  • 20,309
  • 3
  • 16
  • 20
2

Since someone could overwrite undefined like this

undefined = true;

Code of your immediate function will pass it as it should be (stay undefined). I think it's mentioned in 10 Things I Learned from the jQuery Source.

yojimbo87
  • 59,764
  • 22
  • 119
  • 130