问题
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!
回答1:
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
回答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.
来源:https://stackoverflow.com/questions/5395252/passed-in-undefined-argument-in-jquery-core-source-code