2013-02-22 9 views
5

Widziałem kilka skryptów jQuery osadzonych na stronach internetowych, które otwierają się z

(function(window, document, undefined){... 

lub

;(function ($, window, document, undefined) {... 

wierzę ; może być tam, jeśli skrypt jest łączone z innymi plikami i jest nawias zamykający brakuje, ; zatrzymuje minifier od usuwania pierwszych linijek kodu, ale nie jestem pewien.

Co z dwoma wersjami, które zamieściłem? Dlaczego ludzie otwierają swój kod w ten sposób, dlaczego w pierwszym przykładzie brakuje znaku dolara?

+4

Prawdopodobnie dlatego, że w pierwszym przypadku 'jQuery' nie jest przekazywany jako argument do funkcji. To zależy od tego, kto napisał kod. Jeśli chodzi o średnik: http://stackoverflow.com/questions/1031718/what-is-the-consequence-this-bit-of-javascript. –

Odpowiedz

5

Są to opakowania do stworzenia środowiska dla skryptu, który jest tak przewidywalny, jak to możliwe.

Na końcu skryptu pojawi się uchwyt do zamykania wyrażeniu funkcji oraz natychmiastowe wywołanie funkcji, która wysyła w wartościach dla parametrów określonych w podpisie funkcji:

(function($, window, document, undefined){ 
... 
})(jQuery, window, document); 

Jeśli użyj jQuery, do którego należy dodać parametr $, w przeciwnym razie nie. (Lub jeśli nie myślałeś o tym).

Jak widać, nie ma żadnej wartości dla parametru o nazwie undefined. Jeśli parametr nie zostanie przekazany, zostanie ustawiony na wartość undefined, więc w bloku funkcyjnym parametr o nazwie undefined będzie miał wartość undefined. Celem tego jest fakt, że globalny identyfikator undefined nie był stały aż do niedawnych wersji Javascript, więc w starszych przeglądarkach możesz nadać tej wartości wartość undefined, dzięki czemu nie będzie ona już reprezentować wartości undefined. (Zauważ, że parametr bez wartości określonej dostanie wartość rzeczywistą undefined, a nie bieżącą wartość właściwości globalnej undefined).

Jak podejrzewał, dodatkowy średnik na początku jest ochrona skrypt z innych skryptów może być połączony z.