在JavaScript中,用"var“声明的变量的生命周期是多少。我敢肯定,这绝对不符合预期。
<script>
function(){
var a;
var fun=function(){
// a is accessed and modified
}
}();
</script>在这里,JavaScript如何以及何时对变量a进行垃圾回收?由于a是内部函数闭包的一部分,理想情况下它永远不应该被垃圾回收,因为内部函数fun可以作为对外部上下文的引用传递。因此,fun应该仍然能够从外部上下文访问a。
如果我的理解是正确的,那么垃圾收集是如何发生的,以及它如何确保有足够的内存空间,因为在程序执行之前将所有变量保留在内存中可能是不可行的。
发布于 2010-04-22 20:28:21
ECMAScript规范并没有指定垃圾收集器应该如何工作,它只说明如果标识符是可访问的(通过直接指针或闭包),它就不应该是GCed。
查看有关ECMAScript中的标识符解析、闭包、作用域链和垃圾收集的this文章。
希望能有所帮助
发布于 2010-04-22 20:58:51
只要存在对“fun”的外部引用,“a”就不会被垃圾回收。浏览器通过向操作系统请求更多内存来确保它有足够的内存。
https://stackoverflow.com/questions/2690499
复制相似问题