什么是闭包?
通过将作用域嵌套实现将局部变量进化成私有变量的环境,叫做闭包。
当一个外部函数访问在这个函数内部定义的局部变量,就需要在一个函数内部再定义一个函数,通过return返回到函数外部,从而实现我们的需求,这个过程就形成了闭包。
闭包的应用
1、设计模式中的单例模式
2、for循环中i的操作
3、防抖和节流
4、函数柯里化
闭包的作用是什么?
延长变量作用域、在函数外部可以访问函数内部的局部变量;避免全局变量的污染,避免命名冲突;解决循环绑定引发的索引问题;可以使函数内部的变量不会被垃圾回收机制回收。
function fn(){
var num=10;
funcction fun(){
console.log(num);
}
return fun;
}
var f=fn()
f()
闭包的缺点是什么?
容易造成内存泄漏,因为闭包中额局部变量永远不会被回收