In pratica non c'è molta (nessuna?) Differenza con l'esempio che hai fornito, ma hai probabilmente semplificata dal codice che stai effettivamente osservando,.
In un programma più realistico, si avranno ambiti e richiami che vengono attivati ed eseguiti nel eventloop in modo asincrono e si sta vincolando la variabile a un'istanza specifica in una chiusura, quindi;
(function (w){
setTimeout(function(){w.bar = 'baz';},100);
})(window);
window = window2;
Il bar è ancora stato impostato nella finestra originale, dal momento che questo è ciò che è destinato a w
- dove nel
(function(){
setTimeout(function(){window.bar = 'baz';},10);
})(window);
window = window2;
Sarà impostato nell'istanza window2, dal momento che è come il la finestra è vincolata quando si verifica l'esecuzione del codice.
In questo esempio "finestra" è una variabile globale, ma lo stesso è il caso indipendentemente dall'ambito della variabile associata.
uguale a passare 'funzione f1 (f) {console.log (f)} f1 (1);' over 'funzione f1() {console.log (1)} f1(); 'Ti dà il vantaggio di definire il parametro in fase di esecuzione (che può essere definito in qualche altro posto). – gurvinder372
[_Possibilità di posizionare oggetti globali nello scope locale fornisce velocità di ricerca interna più veloci e prestazioni_] (http://gregfranko.com/blog/i-love-my-iife/) – Rayon
@Rayon questa dovrebbe essere la risposta e non un commento – smnbbrv