码迷,mamicode.com
首页 > 其他好文 > 详细

什么是闭包

时间:2017-05-08 16:14:44      阅读:187      评论:0      收藏:0      [点我收藏+]

标签:环境   turn   通过   counter   存在   变量   空间   style   div   

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

 

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

 

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

什么是闭包

标签:环境   turn   通过   counter   存在   变量   空间   style   div   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!