He estado leyendo Javascript - The Good Parts y una cosa que Crockford señala es la debilidad de uso de variables globales en Javascript, de tal manera que si su producto se expande de alguna manera , y se basa en una variable 'global' que podría establecerse inadvertidamente.variables globales JavaScript y funciones anónimas autoinvocadas
Eso es todo bien y bien y entiendo los pros/contras de proteger variables, de otras maneras, como cierres también. Sin embargo, yo estaba pensando un poco, y envolviendo código en una función de este modo:
(function() {
var x = 'meh';
})();
(function() {
alert(typeof x); // undefined
})();
le da alcance variable, que por lo tanto evita la contaminación cruzada de las variables. Sin embargo, no estoy seguro de si hay un inconveniente evidente en este enfoque y me pregunté si la comunidad tenía alguna aportación, o si estoy pensando demasiado e ignorando el punto principal.
Impresionante. Apreciar el enlace. Me pregunto por qué esto no se menciona realmente en su libro (hasta ahora, es posible que sea posterior, pero tendría sentido tenerlo en la parte que critica las variables globales). Al menos sé que no estoy siendo demasiado analítico por una vez. –
Este es mi día de recortes selectivos, aparentemente, pero esas cosas no se llaman * cierres * en un sentido estricto (en un sentido general de informática, todas las funciones de JavaScript son cierres): esas funciones anónimas autoinvocadas solo serían cierres si se usan fuera del ámbito en el que se definieron (por ejemplo, cuando se conecta una función anónima a un detector de eventos dentro de una función que sale antes de que el oyente se separe). –
@Marcel - gracias, lo he actualizado para usar 'function' en lugar de' closure'. –