1.什么是闭包?
如果一个函数用到了外部的变量,那么这个函数加这个变量就叫做闭包。
如何从外部读取函数内部的局部变量?
function f1(){
let a = 1;
function f2(){
consolo.log(a)
}
}
在上面的代码中,函数 f2 就被包括在函数 f1 内部,这时 f1 内部的所有局部变量,对 f2 都是可见的。但是反过来就不行,f2 内部的局部变量,对 f1 就是不可见的。
由于在 JavasSript 中,只有函数内部的子函数才能读取局部变量,说白了闭包就是个函数,只不过是处于其他函数内部而已。
2.闭包的优点
1.访问函数内部的变量
2.防止函数内部的变量执行完城后被销毁,使其一直保存在内存中。
3.避免全局变量被污染
3.闭包的缺点
由于闭包会使得函数中的变量都被保存在内存中,内存消耗很大,所以不能滥用闭包,否则会造成网页的性能问题,在IE中可能导致内存泄露。解决方法是,在退出函数之前,将不使用的局部变量全部删除。