首页 > 其他 > 详细

什么是闭包

时间:2017-05-08 15:46:29      阅读:325      评论:0      收藏:0      [点我收藏+]

基础储备:要理解闭包,首先必须理解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中可能导致内存泄漏。再退出函数之前,将不用的局部变量删除

 

化繁为简的去认识,有助于深入研究和运用。

 

版权声明:本文为博主原创,未经博主允许不得转载。

什么是闭包

原文:http://www.cnblogs.com/momei/p/6825103.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!