什么是闭包
Posted 墨.眉
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了什么是闭包相关的知识,希望对你有一定的参考价值。
基础储备:要理解闭包,首先必须理解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中可能导致内存泄漏。再退出函数之前,将不用的局部变量删除。
化繁为简的去认识,有助于深入研究和运用。
版权声明:本文为博主原创,未经博主允许不得转载。
以上是关于什么是闭包的主要内容,如果未能解决你的问题,请参考以下文章