什么是闭包

98 阅读1分钟

闭包就是定义在一个函数内部的函数,通过闭包可以访问外部函数的变量,闭包内部的变量在函数调用后也不会释放

写一个闭包

function f1(){
    var a = 100;
    function f2(){
        alert(a)
    }
    return f2
}
var res = f1()//声明一个新实例
res()//调用
//输出100

闭包的缺点

  1. 可能会内存泄漏, 大量变量都保存在闭包里, 导致网页性能不佳, 可以在每次运行完之后, 将无用的局部变量删除
  2. 闭包会在父函数的外部, 改变父函数内部的值, 如果父函数为object, 闭包为公用函数, 内部变量为私有变量, 则要小心修改父函数内部变量值