-
1. 什么是闭包(closure)?
- 闭包是一种特殊的函数。
-
2. 如何生成一个闭包?
- 当一个内部函数引用了外部函数的数据(变量/函数)时, 那么内部函数就是闭包
- 所以只要满足"是函数嵌套 "、" 内部函数引用外部函数的数据 "
-
3. 闭包特点:
- 只要闭包还在使用外部函数的数据, 那么外部函数的数据就一直不会释放
- 也就是说可以延长外部函数数据的生命周期
-
4. 闭包注意点:
- 当后续不需要使用闭包的时候, 一定要手动将闭包设置为 null, 否则会出现内存泄漏
// 不是闭包的时候
function text() {
var i = 666; // 局部变量
} // 只要代码执行到了大括号结束, i 这个变量就会自动释放
console.log(i); // i is not defined
// 是闭包的时候
function text() {
var i = 666;
// 由于demo函数满足闭包的量条件, 所以demo函数就是闭包
return function demo() {
console.log(i);
}
}
let fn = text();
fn(); // 666