2011-03-01 28 views
8

Possibili duplicati:
How does this JavaScript/JQuery Syntax work: (function(window, undefined) { })(window)?
What advantages does using (function(window, document, undefined) { … })(window, document) confer?variabile denominata undefined in librerie javascript

Ho visto molte librerie javascript creare una variabile denominata "indefinito", iam in grado di capire la sua scopo, di seguito sono le linee copiate dalla libreria jQuery

* Date: Wed Feb 23 13:55:29 2011 -0500 
*/ 
(function(window, undefined) { 

// Use the correct document accordingly with window argument (sandbox) 
var document = window.document; 
var jQuery = (function() { 

Si prega di suggerire il motivo e i vantaggi di farlo !!

risposta

7

Quello che vedrete è qualcosa di simile:

(function(undefined) { 
    /* lots of code */ 
}()); 

questo modo si crea una funzione anonima e subito lo esegue. La funzione ha un parametro chiamato undefined. Poiché non è passato alcun argomento alla funzione, la variabile undefined è in effetti il ​​primitive value undefined Javascript.

Allora perché vuoi farlo? Beh, il problema è che si può effettivamente creare una variabile con il nome undefined e impostarlo su qualcosa che ti piace, ad es .:

var undefined = 'some text'; 

Un test myvalue === undefined all'interno del codice sarebbe poi avere risultati imprevisti.

La funzione anonima con il parametro chiamato undefined essenzialmente "reimposta" il valore di undefined al valore di base, in modo che sia possibile verificarlo, se lo si desidera, senza doversi preoccupare se ha il valore corretto.

6

È necessario assicurarsi che undefined sia in realtà undefined. Paul Irish calls it the asshole effect, altri js inclusi nella pagina potrebbero cambiare il significato di non definito, e quindi otterrai risultati imprevisti.

+1

Non l'ho mai capito bene. Potrei anche fare qualcosa di stupido come 'jQuery = {}', e poi jQuery smetterebbe di funzionare - non sorprende. Se vuoi spararti ai piedi inserendo "undefined = true", perché fermarti? – Andrea

+1

Beh, qualcun altro potrebbe provare a spararti ai piedi, come un plugin casuale incluso. – Loktar

Problemi correlati