什么是闭包?闭包的优缺点?

195 阅读1分钟

1.什么是闭包?

如果一个函数用到了外部的变量,那么这个函数加这个变量就叫做闭包。

如何从外部读取函数内部的局部变量?

function f1(){
    let a = 1;
    function f2(){
        consolo.log(a)
    }
}

在上面的代码中,函数 f2 就被包括在函数 f1 内部,这时 f1 内部的所有局部变量,对 f2 都是可见的。但是反过来就不行,f2 内部的局部变量,对 f1 就是不可见的。
由于在 JavasSript 中,只有函数内部的子函数才能读取局部变量,说白了闭包就是个函数,只不过是处于其他函数内部而已。

2.闭包的优点

1.访问函数内部的变量

2.防止函数内部的变量执行完城后被销毁,使其一直保存在内存中。

3.避免全局变量被污染

3.闭包的缺点

由于闭包会使得函数中的变量都被保存在内存中,内存消耗很大,所以不能滥用闭包,否则会造成网页的性能问题,在IE中可能导致内存泄露。解决方法是,在退出函数之前,将不使用的局部变量全部删除。