闭包

1.  请解释一下什么是闭包

对于闭包,相信每个人都有自己的见解,并且网上一大推关于闭包的概念,我的理解是能够访问到其包含(外部)函数内部变量的函数。

主要有两个特性:

一个是可以读取其包含函数内部的变量;另一个就是让这些变量的值始终保持在内存中。

使用闭包的注意点:
过多使用会造成内存泄露的现象,因为闭包会引用其包含函数作用域的变量对象,使得即使包含函数执行完毕后,其作用域的变量对象不会被销毁,即其占用的内存无法得到回收,直至闭包执行完毕后才会被销毁。所以不能滥用闭包,否则会造成网页的性能问题,在IE中可能导致内存泄露。解决方法是,在退出函数之前,将不使用的局部变量全部删除。

function A(){
    var S=0;
    function B(){
        alert(++S);
    }
    return B;
}
var C=A();
C();
原文地址:https://www.cnblogs.com/zhangwenkan/p/4263333.html