首页 > 代码库 > 什么是闭包
什么是闭包
基础储备:要理解闭包,首先必须理解JS中变量的作用域。
闭包的作用:可以读取函数内部的变量(外部无法读取);让这些值始终保存在内存中。
function n1(){ var n = 99; function n2(){ alert(n); } return n2; } var temp = n1(); // 返回 n2函数 temp(); // 返回 99
n = 99 在执行中被 n2 捕捉,n1 执行完毕(函数执行完毕,内存中的变量会被销毁),n=99 通过 n2 依然能够访问。
—— 返回的函数,并非孤立的函数,它让周围的变量环境形成一个封闭的“环境包”一并返回。
function counter(){ var cnt = 0; function center(){ return ++cnt; } return center; } var inc = counter(); alert(inc()); // 返回 1 alert(inc()); // 返回 2 /*闭包的计数器*/
[1] 只要存在调用内部函数的可能,JS就需要保留被引用的函数,而且JS运行时需要跟踪引用这个内部函数的所有变量,直到最后一个变量销毁,JS才能释放相应的内存空间。
[2] 由于闭包会使的函数中的变量都被保存在内存中,内存消耗极大,所以不能滥用闭包,负责会造成网页性能问题,IE中可能导致内存泄漏。再退出函数之前,将不用的局部变量删除。
化繁为简的去认识,有助于深入研究和运用。
版权声明:本文为博主原创,未经博主允许不得转载。
什么是闭包
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。