闭包

89 阅读1分钟

函数内部的函数

function fn() {
    var num = 100;
    
    return function() {
        return num;
    }
}
​
// res 是 fn 的闭包函数
const res = fn();
console.log(res());

形成闭包条件

  • 一个不会被销毁的函数空间
  • 函数内部 直接 或 间接 的返回一个函数
  • 内部函数操作(访问,赋值)着外部函数的变量
  • 以上条件都成立时,我们把内部函数叫做外部函数的闭包函数

闭包的作用

  • 保护变量私有化

    • 定义在函数内部的变量就是私有变量
  • 在函数外部访问函数内部的私有变量

    • 利用闭包函数访问

闭包的特点

  • 保护变量私有化

    • 优点:不去污染全局
    • 缺点:外部不能访问,需要闭包函数
  • 可以在函数外部访问函数内部的变量

    • 优点:不局限于私有变量
    • 缺点:外部访问需要闭包函数
  • 变量的生命周期

    • 优点:变量的生命周期被延长
    • 缺点:一个不会被销毁的函数空间
  • 致命缺点

    • 内存泄漏