[英]Self destructing Javascript function - How does it work?
所以我找到了這段代碼,它顯然有效(因為它已經生產了多年):
window[someMethod] = function (tmp) {
callback({prop:"val"}, tmp);
// Garbage collect
window[someMethod] = undefined;
try {
delete window[someMethod];
}
catch (e) { }
if (head) {
head.removeChild(script);
}
// head refers to DOM head elem and script refers to some script file elem
};
很想知道,它是如何工作的?
undefined
並try
delete
自身? undefined
和delete
? 如何? 希望這是有道理的。
請記住,您無法在Javascript中明確刪除某些內容。 您所能做的就是刪除對它的所有引用,然后讓垃圾收集器在下一個周期中將其刪除。 在此函數結束時,函數本身仍在內存中,但沒有外部引用。 下次GC運行時,它會發現它並釋放其內存。
window [someMethod]只是一個引用。 僅刪除引用,而不刪除函數本身。 一旦函數完成,並且刪除了對它的所有引用,垃圾收集應該處理它,避免內存泄漏。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.