2013-05-25 8 views

risposta

5

Questo add 'dataValidate' all'oggetto finestra

Sì, lo farà.

Ad esempio, se ci si trova all'interno di un altro ambito;

function foo() { 
    var bar = 4; 

    window.bar = bar; 
} 

Ora hai fatto bar globale, e può accedervi da qualsiasi luogo . Senza lo window.bar = bar, avresti potuto accedervi solo entro foo().

Si vedrà comunemente questo essere utilizzato alla fine di un IIFE, a pubblicare lavoro nel resto del mondo (ad esempio jQuery);

(function() { 
    var jQuery; 

    // Setup jQuery 

    window.jQuery = jQuery; 
}()); 

Si potrebbe vedere invece persone che fanno questo;

function foo() { 
    bar = 4; // Note the lack of `var` 
} 

Questo ha lo stesso effetto attraverso l'uso di "impliciti globali"; ma genererà un errore nella modalità rigorosa ES5 ed è generalmente considerato una cattiva pratica (il programmatore ha pensato di renderlo globale oppure ha semplicemente omesso accidentalmente var?).

+2

Viene generato un errore solo nella modalità rigorosa ES5: nella modalità non rigida delle specifiche ES5 non lo farà. –

+1

@ Qantas94Heavy: Haha, grazie per la correzione ... il mio cervello stava scrivendo "modalità rigorosa ES5", ma sembra che la mia tastiera avesse altre idee;). – Matt

+1

o una parte del tuo cervello stava pensando rigorosamente e l'altra lo stava mangiando :-) – tgkprog

Problemi correlati