Jaka jest korzyść z wbudowanych wywołań funkcji?
Widziałem ten kod (wyraźnie w jQuery, z modyfikacją)
(function(window,undefined){
var jQuery=(function(){
var jQuery=something;
jQuery.xxx=xxx;
//...
return jQuery;
})();
//...
window.jQuery=window.$=jQuery;
})(window);
Rozumiem, że kod owijania w wywołaniu funkcji inline może jasno zdefiniować zakres zmiennej, ale nie rozumiem korzyści z tego
przechodzącywindow
z parametrem zamiast używać go bezpośrednio,uzyskanie instancjiundefined
przez niezdefiniowany parametr, a takżedefiniowaniejQuery
przez wartość zwrotną innego wywołania funkcji inline. Czy ktoś może trochę wyjaśnić?EDYTOWAĆ napisz # 3 wyraźniej:
Rozumiem, że kod definiujejQuery
w innej funkcji zwróć ją.
//(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);
To bardziej jak poniżej:
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);
Czy nie byłoby prostsze:
//(function(window,undefined){
var jQuery=function(selector,context){
return new jQuery(selector,context); //simplified
};
jQuery.xxx=xxx;
//...
//... })(window);