2013-02-22 7 views
5

Ho visto alcuni script jQuery incorporati nelle pagine web che si aprono con

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

o

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

credo che il ; potrebbe essere lì se lo script è concatenato con altri file e v'è una parentesi di chiusura mancante, il ; arresta il minifier di rimuovere le prime righe del codice, ma non sono sicuro.

Che cosa è successo con le due varianti che ho postato? Perché le persone aprono il loro codice in questo modo, perché il primo esempio manca il simbolo del dollaro?

+4

Probabilmente perché nel primo caso, 'jQuery' non viene passato come argomento alla funzione. Questo è totalmente a carico di chiunque abbia scritto il codice. Per quanto riguarda il punto e virgola: http://stackoverflow.com/questions/1031718/quello-è-la-conseguenza-di-questo-di-avviso. –

risposta

5

Questi sono wrapper per creare un ambiente per uno script il più prevedibile possibile.

Alla fine dello script si vedrà la parentesi di chiusura per l'espressione di funzione, e la chiamata immediato alla funzione che invia i valori per i parametri definiti nella firma funzione di:

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

Se usa jQuery per includere il parametro $, altrimenti no. (Oppure se non hai pensato di includerlo.)

Come puoi vedere, non esiste alcun valore per il parametro denominato undefined. Quando non si passa un valore per un parametro, verrà impostato sul valore undefined, quindi all'interno del blocco funzione il parametro denominato undefined avrà il valore undefined. Lo scopo di questo è perché l'identificatore globale undefined non era una costante fino alle versioni recenti di Javascript, quindi nei browser più vecchi è possibile assegnare alla proprietà undefined un valore in modo che non rappresenti più undefined. (Notare che il parametro senza un valore definito otterrà il valore attuale undefined, non il valore corrente della proprietà globale undefined.)

Come sospetti, il punto e virgola in più all'inizio è proteggere lo script da altri script che potrebbe essere unito a

Problemi correlati