簡體   English   中英

在局部范圍內引用全局變量

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM