2008-12-23 12 views

Respuesta

21

Utiliza el cuerpo de la función para proporcionar su propio alcance en lugar de introducir un gran número de globales que podrían cambiar accidentalmente por código externo.

Por ejemplo.

(function(){ 
    var someConstantValue = ...; 
    myCoolFunction = function(){ return someConstantValue * 5; } 
})(); 

myCoolFunction(); 

Si el ámbito de la función no se introdujeron sería posible cambiar accidentalmente someConstantValue introduciendo otro código (o otra biblioteca)

someConstantValue = someOtherValue; // this won't change the behaviour of myCoolFunction 
6

Tienes razón que impida la contaminación del mundial espacio de nombres

Todas las variables y funciones que jQuery necesita se crean dentro de esa función, lo que evita que esas funciones y variables se desangren en el espacio de nombres global. Si nos fijamos en este bloque de código:.

var jQuery = window.jQuery = window.$ = function(selector, context) { 
// The jQuery object is actually just the init constructor 'enhanced' 
return new jQuery.fn.init(selector, context); 
}; 

se trata en realidad de conectar el inicializador de jQuery para el mundo exterior mediante el establecimiento y la ventana window.jQuery $ a la función de inicialización. Ese es el único lugar donde las variables dentro de la función de envoltura están disponibles directamente fuera del envoltorio.

Observe también que la función completa se ajusta de esta manera (función ,,,)() que ejecutará esa función tan pronto como se cargue el archivo.

Cuestiones relacionadas