Lifetime of JavaScript variables

别来无恙 提交于 2019-12-23 07:38:08

问题


What is the lifetime of a variable in JavaScript, declared with "var". I am sure, it is definitely not according to expectation.

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


</script>

Here how and when does JavaScript garbage collect the variable a? Since a is a part of the closure of the inner function, it ideally should never get garbage collected, since the inner function fun, may be passed as a reference to an external context. So fun should still be able to access a from the external context.

If my understanding is correct, how does garbage collection happen then, and how does it ensure to have enough memory space, since keeping all variables in memory until the execution of the program might not be tenable ?


回答1:


The ECMAScript specification does not specify how the garbage collector should work, it only says that if an identifier is reachable (through a direct pointer or a closure), it shouldn't be GCed.

Check out this article about identifier resolution, closures, scope chaining and garbage collection in ECMAScript.

Hope it helps




回答2:


'a' will not be garbage-collected as long as there are external references to 'fun'. The browser ensures it has enough memory by asking for more memory from the OS.



来源:https://stackoverflow.com/questions/2690499/lifetime-of-javascript-variables

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!