您的位置:首页 > Web前端 > JavaScript

JS闭包小结

2016-02-28 15:14 681 查看
1 什么是闭包

简言之,闭包就是外部函数中包含另一个内部函数,这个内部函数就是一个闭包

2 闭包的优点、缺点

优点:
可以让一个变量常驻内存 (如果用的多了就成了缺点)
避免全局变量的污染
私有化变量

缺点
因为闭包会携带包含它的函数的作用域,因此会比其他函数占用更多的内存
引起内存泄露

3 如何释放被闭包的变量内存
举个列子如下:

window.onload = function(){
var el = document.getElementById("id");
el.onclick = function(){
alert(el.id);
}
}

以上代码存在循环引用,会造成内存泄漏,解决方法如下:

window.onload = function(){
var el = document.getElementById("id");
var id = el.id; //解除循环引用
el.onclick = function(){
alert(id);
}
el = null; // 将闭包引用的外部函数中活动对象清除
}

那怎么释放的内存呢,简言之,就是在退出函数前将闭包引用的外部函数中的活动对象清除,或者说清除外部函数中与闭包有关的对象,比如上例中,el的引用次数是2,如果没有el=null这句,那么el对象将不会被清除。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: