1、闭包的定义
一个闭包就是你调用了一个函数A,这个函数A返回了一个函数B给你,而且函数B引用了一个A中的变量。这个返回的函数B就叫做闭包。
function foo() {
var num = 123;
return function() {
return num;
}
}
2、闭包形成条件(缺一不可)
- 必须有一个内嵌函数(函数里定义的函数)——这对应函数之间的嵌套
- 内嵌函数必须引用一个定义在闭合范围内(外部函数里)的变量——内部函数引用外部变量
- 外部函数必须返回内嵌函数——必须返回那个内部函数
3、闭包用途
- 能够访问函数定义时所在的词法作用域(阻止其被回收)
- 私有化变量
- 模拟块级作用域
- 创建模块
4、闭包缺点
会导致函数的变量一直保存在内存中,过多的闭包可能会导致内存泄漏