5
我經常在第三方JavaScript代碼看到,經過:爲什麼在document.getElementById-ed之後,對象必須被禁止使用IE?
var el = document.getElementById(elementId);
對象往往是歸零,並沿此操作發表評論說,這是對IE進行:
el = null; // IE
什麼是真正的目的是什麼?任何資源?
我經常在第三方JavaScript代碼看到,經過:爲什麼在document.getElementById-ed之後,對象必須被禁止使用IE?
var el = document.getElementById(elementId);
對象往往是歸零,並沿此操作發表評論說,這是對IE進行:
el = null; // IE
什麼是真正的目的是什麼?任何資源?
通過nixing一個引用,它們打破了DOM對象和JavaScript對象之間相應的循環依賴關係,這些依賴關係由較舊的IE中的不同子系統控制(因此不可能被垃圾收集)。
例如:
var el = document.getElementById(elementId);
el.onclick = function() { // here the cyclic reference is created
/...
};
JavaScript的子系統現在有一個參考el
元件,和DOM子系統(所述el
元件)具有對JavaScript對象的引用(函數加上它關閉在什麼)。
但是,如果您通過addEventListener
添加偵聽器,則不必擔心。請參閱。
IIRC,這是因爲IE否則在閉包範圍內保留對_all_可訪問變量的引用,這會使其泄漏未使用的非空引用。 – zneak