Ora è meno problematico, ma direi che c'è ancora un motivo per questa idea generale.
Teoricamente, è possibile per, diciamo, un po 'di libreria di terze parti di scrivere codice come questo seguente:
let count = 0;
function getCount() {
return count++;
}
Ora, se si è tentato di creare il proprio variabile count
nello stesso ambito, è' d un errore:
// 3rd-party
let count = 0;
function getCount() {
return count++;
}
// Your code
let count = 1;
Tuttavia, è possibile rendere il codice più pulito utilizzando blo reale cks invece di IIFE.
// Still bad 3rd party
let count = 0;
function getCount() {
return count++;
}
// Your code
{
let count = 10;
console.log(count);
console.log(getCount());
console.log(count);
console.log(getCount());
}
In futuro, si dovrebbe essere in grado di incapsulare il codice in moduli che avranno la loro portata e non avrà bisogno di avvolgere il vostro codice in un IIFE o di un blocco.
fonte
2016-05-23 19:54:08
Correlati: [Namespacing with IIFE in ES6?] (Http://stackoverflow.com/questions/32746615/namespacing-with-iife-in-es6) –
Vedere anche [Will const e non rendere il pattern IIFE non necessario? ] (http://stackoverflow.com/q/33534485/1048572) – Bergi
"* le variabili create con la parola chiave let" non sono associate a 'window' object *" - ma sono ancora globali. Quindi, se stai scrivendo degli script, dovrai metterli in un blocco o in un IIFE. – Bergi