函数内部的函数
function fn() {
var num = 100;
return function() {
return num;
}
}
// res 是 fn 的闭包函数
const res = fn();
console.log(res());
形成闭包条件
- 一个不会被销毁的函数空间
- 函数内部 直接 或 间接 的返回一个函数
- 内部函数操作(访问,赋值)着外部函数的变量
- 以上条件都成立时,我们把内部函数叫做外部函数的
闭包函数
闭包的作用
保护变量私有化
- 定义在函数内部的变量就是私有变量
在函数外部访问函数内部的私有变量
- 利用闭包函数访问
闭包的特点
保护变量私有化
- 优点:不去污染全局
- 缺点:外部不能访问,需要闭包函数
可以在函数外部访问函数内部的变量
- 优点:不局限于私有变量
- 缺点:外部访问需要闭包函数
变量的生命周期
- 优点:变量的生命周期被延长
- 缺点:一个不会被销毁的函数空间
致命缺点
- 内存泄漏