Cuál es la vida útil de una variable en JavaScript, declarada con "var". Estoy seguro, definitivamente no está de acuerdo con las expectativas.Vida útil de las variables de JavaScript
<script>
function(){
var a;
var fun=function(){
// a is accessed and modified
}
}();
</script>
Aquí cómo y cuándo JavaScript recoger la basura la variable a
? Dado que a
es una parte del cierre de la función interna, lo ideal es que nunca se recoja la basura, ya que la función interna fun
se puede pasar como referencia a un contexto externo. Por lo tanto, fun
aún debe poder acceder al a
desde el contexto externo.
Si mi comprensión es correcta, ¿cómo ocurre la recolección de basura entonces, y cómo se asegura tener suficiente espacio de memoria, ya que mantener todas las variables en la memoria hasta la ejecución del programa podría no ser sostenible?
Esta es una gran pregunta por cierto. Señala que el cierre en sí mismo no es lo único que se conserva en la memoria hasta que se cierra el cierre del GC. Toda la cadena de alcance de la función también lo es. Parece haber cierta controversia, pero algunos pensamientos adicionales parecen indicar que cada declaración de función en JavaScript es un cierre, en relación con el alcance global. Sin embargo, hay una excepción [consulte esta respuesta] (http://stackoverflow.com/a/30252865/511795) – Shanimal