js闭包避免内存泄漏 减少内存使用 避免对象无法回收注意事项

闭包

如果闭包的作用域中保存着一个 HTML 元素,则该元素无法被销毁。(下面代码来自高程)
闭包是 JavaScript 开发的一个关键方面:匿名函数可以访问父级作用域的变量。 function assgin() {
var ele = document.getElementById('someEle');
ele.onclick = function(){
alert(ele.id);
}
}
以上代码创建了一个作为 ele 元素事件处理程序的闭包,而这个闭包有创建了一个循环的引用,由于匿名函数保存了一个 assgin() 的活动对象的引用 ,因此无法减少对 ele 的引用次数 , 只要匿名函数存在,ele的引用次数至少是 1。我们可以稍微改写一下: function assgin() {
var ele = document.getElementById('someEle');
var id = ele.id
ele.onclick = function(){
alert(id);
}
ele = null;
}

一些js使用的注意事项可以看看  https://segmentfault.com/a/1190000010477169

上一篇:转《js闭包与内存泄漏》


下一篇:高效使用 JavaScript 闭包,避免 Node.js 应用程序中的内存泄漏