Estuve leyendo este post que aclaraba casi todo sobre los visores, dejando solo esta duda:
Si los ámbitos léxicos generan un nuevo entorno en cada ejecución y almacenan su información, en un entorno donde el código se ejecuta con frecuencia, debe declarar var_of_scope = null al final del ámbito para liberar memoria o JavaScript lo reconoce automáticamente si no hay elementos que se refiere al medio ambiente?
No, eso casi nunca es necesario.
Javascript utiliza la recolección de basura. Cuando ningún valor en ningún ámbito hace referencia a un valor almacenado en la memoria, se elimina durante la siguiente ejecución del recolector de elementos no utilizados.
En la situación que describes:
function foo() { let data = "some data here" // do stuff with data data = null } Establecer el null aquí no es útil. Elimina todas las referencias al valor anterior de data , pero dado que el alcance finalizará cuando finalice la función, todas las variables locales se descartarán junto con él de todos modos.
De hecho, esto le impediría usar la palabra clave const , que es muy buena para usar. Todas sus variables deben ser const de forma predeterminada, y debe cambiarlas para let solo si realmente necesita asignarlas después de la inicialización.
Esta es mejor:
function foo() { const data = "some data here" // do stuff with data }En general, simplemente no tienes que preocuparte por esto. No es fácil perder memoria en javascript como lo es en un lenguaje como C. Es posible, pero mientras siga la mayoría de las mejores prácticas, probablemente estará bien.