JavaScript变量的生命周期

The*_*ine 9 javascript variables garbage-collection lifetime

JavaScript中变量的生命周期是什么,用"var"声明.我相信,这绝对不是出乎意料的.

<script>
function(){
   var a;
   var fun=function(){
     // a is accessed and modified  
     }
}();


</script>
Run Code Online (Sandbox Code Playgroud)

这里JavaScript垃圾如何以及何时收集变量a?由于a是内部函数闭包的一部分,理想情况下它应该永远不会被垃圾收集,因为内部函数fun可以作为对外部上下文的引用传递.所以fun应该仍然能够a从外部上下文访问.

如果我的理解是正确的,那么垃圾收集是如何发生的,以及它如何确保有足够的内存空间,因为将所有变量保留在内存中直到程序的执行可能不成立?

Pab*_*era 5

ECMAScript 规范没有指定垃圾收集器应该如何工作,它只是说如果标识符是可访问的(通过直接指针或闭包),则不应对其进行 GC。

查看这篇关于 ECMAScript 中的标识符解析、闭包、作用域链和垃圾收集的文章。

希望能帮助到你