Qual é o benefício das chamadas de função embutidas?
Eu vi esse código (explicitamente é no jQuery, com modificação)
(function(window,undefined){
var jQuery=(function(){
var jQuery=something;
jQuery.xxx=xxx;
//...
return jQuery;
})();
//...
window.jQuery=window.$=jQuery;
})(window);
Embora eu entenda o código de embalagem em uma chamada de função embutida pode definir claramente o escopo da variável, eu não entendo os benefícios de
passagemwindow
com um parâmetro em vez de usá-lo diretamenterecebendo uma instância deundefined
por um parâmetro indefinido, e tambémdefinindojQuery
pelo valor de retorno de outra chamada de função em linha. Alguém pode explicar um pouco?EDITAR escreva # 3 mais claramente:
O que eu entendo é que o código definejQuery
dentro de outra função, em seguida, devolva-a.
//(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);
Isso é mais parecido com o seguinte:
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);
Não seria mais simples de fazer:
//(function(window,undefined){
var jQuery=function(selector,context){
return new jQuery(selector,context); //simplified
};
jQuery.xxx=xxx;
//...
//... })(window);