2008-12-23 5 views

Antwort

21

Es verwendet den Funktionskörper, um seinen eigenen Gültigkeitsbereich bereitzustellen, anstatt eine große Anzahl von Globals einzuführen, die versehentlich durch externen Code geändert werden könnten.

Eg.

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

myCoolFunction(); 

Wenn der Funktionsumfang wäre es nicht eingeführt wurden, möglich, versehentlich someConstantValue durch die Einführung anderer Code zu ändern (oder eine andere Bibliothek)

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

Sie haben Recht, dass sie die Verschmutzung der globalen verhindern Namensraum.

Alle Variablen und Funktionen, die jQuery benötigt, werden innerhalb dieser Funktion erstellt, sodass diese Funktionen und Variablen nicht in den globalen Namespace gelangen. Wenn Sie an diesem Code-Block aussehen:.

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); 
}; 

es ist eigentlich die jQuery initializer an die Außenwelt verbindet durch window.jQuery und Fenster Einstellung $ auf die Initialisierungsfunktion. Das ist der einzige Ort, an dem die Variablen innerhalb der Wrapper-Funktion direkt außerhalb des Wrappers verfügbar sind.

Beachten Sie auch, dass die ganze Funktion wie folgt verpackt ist (Funktion ,,,)(), die diese Funktion ausführen wird, sobald die Datei geladen wird.

Verwandte Themen