1. 程式人生 > 其它 >JavaScript由於閉包導致的記憶體洩漏問題

JavaScript由於閉包導致的記憶體洩漏問題

技術標籤:JavaScript踩坑之旅JavaScriptjavascript

簡單介紹一些閉包的概念;
閉包指的是那些引用了另外一個函式作用域中變數的函式,一般是通過巢狀函式的方式實現的,比如下面的一個簡單的例子:

function a (){
var a=3;
return function b(){
	console.log(a)
	}
}

閉包在IE9之前的版本會有些問題,如果把頁面的某個元素或者標籤儲存在某個閉包的作用域中,相當於告訴瀏覽器的垃圾回收機制,該元素不能被銷燬,比如下面這個例子:

function oneFun(){
    let element = document.
getElementById('someElements'); let id = element.id; element.onclick = () =>console.log(element.id); }

上面的程式碼建立了一個閉包,它就是一個簡單的元素的事件處理程式,這個處理程式建立了一個迴圈引用;裡面的匿名函式引用這oneFun()的活動物件,阻止了對element 引用