Masz rację, że będzie zapobiegać zanieczyszczeniom globalny przestrzeń nazw.
Wszystkie zmienne i funkcje, których potrzebuje jQuery, są tworzone wewnątrz tej funkcji, co powoduje, że te funkcje i zmienne nie krwawią do globalnej przestrzeni nazw. Jeśli spojrzeć na ten fragment kodu:.
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);
};
to faktycznie łączącej inicjator jQuery światem zewnętrznym poprzez ustawienie window.jQuery i okna $ do funkcji inicjalizacji. Jest to jedyne miejsce, w którym zmienne wewnątrz funkcji opakowania są dostępne bezpośrednio poza opakowaniem.
Należy zauważyć, że cała funkcja jest zawijana w ten sposób (funkcja ,,,)(), która wykona tę funkcję, gdy tylko plik się załaduje.