[英]Referencing global variables in local scopes
我想知道下面提到的代码中的内存泄漏。 JavaScript是否执行自动垃圾回收。
var aGlobalObject = SomeGlobalObject;
function myFunction() {
var localVar = aGlobalObject;
}
我是否必须按以下说明清除内存。
var aGlobalObject = SomeGlobalObject;
function myFunction() {
var localVar = aGlobalObject;
localVar = null;// or delete localVar
}
谢谢
该代码中没有内存泄漏。 局部变量引用与全局变量相同的对象。 函数返回时,将删除局部变量,因为不再有对其的引用。 对象本身仍然存在,因为它仍被全局变量引用。 ( 当我说“删除本地变量”时:从技术上讲,该变量所在的[隐式]容器不再具有引用它的任何内容,可用于垃圾收集;实际的收集可能在以后发生。 )
JavaScript确实具有垃圾回收功能。 delete
关键字在Javascript中的含义与在C ++中完全不同。 Javascript对象具有属性。 您可以使用delete
完全删除对象的属性,例如:
var obj = {}; // Blank object
obj.foo = 5; // `obj` now has a property called `foo`
obj.foo = null; // `obj` STILL has a property called `foo`; its value is just null now
delete obj.foo; // `obj` no longer has a property called `foo`
是的, JavaScript会进行垃圾回收 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.