Costituirà e farà in modo che lo schema IIFE non sia necessario?

A quanto ho capito, il pattern IIFE è un ostacolo al fatto che ES5 e versioni precedenti non hanno un modo per creare ambiti di blocco. Riempiendo tutto in una funzione e invocandolo immediatamente, possiamo creare un ambito.

Ora che let e const avranno più supporto da parte dei browser, questo riduce la necessità di qualcosa come il pattern IIFE?

Sì, i blocchi sostituiranno IEFE, non appena le dichiarazioni a blocco ( funzioni , let / const / class ) saranno ampiamente adottate. Hai bisogno di un ambito, ad esempio per una chiusura? Qui hai un blocco, che si tratti di un loop o di una parte di un elenco di istruzioni.

Tuttavia, esiste ancora un’applicazione IEFE che i blocchi non possono sostituire: il modello del modulo. I blocchi non hanno valori di ritorno e la mutazione di variabili con ambito superiore è brutta, quindi vedremo ancora espressioni di funzioni nella creazione di oggetti che necessitano di uno stato privato:

 const example = (() => { … return …; }()); 

Sebbene i browser possano iniziare a supportarlo, ci sarà sempre un browser casuale che è obsoleto o che non sta pianificando il supporto per questo. fino a quando non è diventato standard in tutti i principali browser, si consiglia comunque di continuare con il pattern IIFE finché non lo si trova su tutti i browser maggiormente utilizzati. Qualcosa che potresti fare è avere uno script (o google analytics) che invii informazioni sul fatto che questo non sia definito o meno e finché non ottieni almeno il 90% di esso dicendo che non è indefinito, dovresti continuare con IIFE.

Sì, è molto raccomandabile usare const e let e anche tutte le nuove funzionalità di ES6. Potrebbe non essere supportato da tutti i browser per ora, ma puoi semplicemente utilizzare compilatori come babel nelle tue applicazioni per assicurarti che funzionino ovunque.