attribute javascript scope ecmascript-6 hoisting

javascript - attribute - ¿Const y dejará que el patrón IIFE sea innecesario?



html title attribute (3)

Aunque el navegador puede comenzar a admitir esto, siempre habrá algún navegador aleatorio que esté desactualizado o que no esté planeando soporte para esto. hasta que se haya convertido en estándar en todos los navegadores principales, aún se recomienda que continúe con su patrón IIFE hasta que lo encuentre en todos los navegadores más utilizados. algo que podría hacer es que un script (o google analytics) envíe información sobre si esto está indefinido o no, y hasta que obtenga al menos alrededor del 90% diciendo que no está indefinido, debe continuar con IIFE.

Según tengo entendido, el patrón IIFE es una solución al hecho de que ES5 e inferior no tienen una forma de crear ámbitos de bloque. Al envolver todo en una función e invocarla de inmediato, podemos crear un ámbito.

Ahora que let y const obtendrán más soporte de los navegadores, ¿esto reduce la necesidad de algo como el patrón IIFE?


Sí, es muy recomendable usar const y let y también todas las nuevas características de ES6. Es posible que no sea compatible con todos los navegadores por el momento, pero puede usar compiladores como babel en sus aplicaciones para asegurarse de que funcionen en todas partes.


Sí, los bloques reemplazarán a IEFE, tan pronto como las declaraciones de ámbito de bloque ( functions , let / const / class ) sean ampliamente adoptadas. ¿Necesita un alcance, por ejemplo, para un cierre? Aquí tiene un bloque, ya sea un cuerpo de bucle o simplemente parte de una lista de instrucciones.

Sin embargo, todavía hay una aplicación de IEFE que los bloques no pueden reemplazar: el patrón del módulo. Los bloques no tienen valores de retorno, y la mutación de variables de mayor alcance es fea, por lo que aún veremos expresiones de función en la creación de objetos que necesitan un estado privado:

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