[英]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.