我看到了这段代码(很明显它在 jQuery 中,有修改)
(function(window,undefined){
var jQuery=(function(){
var jQuery=something;
jQuery.xxx=xxx;
//...
return jQuery;
})();
//...
window.jQuery=window.$=jQuery;
})(window);
虽然我理解在内联函数调用中包装代码可以清楚地定义变量范围,但我不明白这样做的好处
- 传递
window
参数而不是直接使用它, - 通过未定义的参数获取实例
undefined
,以及 - 由另一个内联函数调用的返回值定义
jQuery
。有人可以解释一下吗?
编辑更清楚地写#3:
我的理解是代码jQuery
在另一个函数中定义然后返回它。
//(function(window,undefined){
var jQuery=(function(){
// Inside this function defines jQuery and return it?
var jQuery=function(selector,context){
return new jQuery(selector,context); //simplified
};
jQuery.xxx=xxx;
//...
return jQuery;
})(); // This executes the inline function and assign `jQuery` with the return value???
//... })(window);
这更像是以下内容:
function define_jQuery(){
// Inside this function defines jQuery and return it?
var jQuery=function(selector,context){
return new jQuery(selector,context); //simplified
};
jQuery.xxx=xxx;
//...
return jQuery;
}
//(function(window,undefined){
var jQuery=define_jQuery(); // This executes the inline function and assign `jQuery` with the return value???
//... })(window);
这样做会不会更简单:
//(function(window,undefined){
var jQuery=function(selector,context){
return new jQuery(selector,context); //simplified
};
jQuery.xxx=xxx;
//...
//... })(window);