JS 的闭包是什么

133 阅读1分钟

闭包是 JS 的一种语法特性

首先创建一个非全局环境,也就是创建一个立即执行函数,在立即执行函数离创建一个count的变量,接着return 一个y函数,y函数里面访问立即执行函数里的变量count,当我们调用x()时相当于调用y()相当于count += 1,至此我们就实现了一个完整的「闭包的应用」,也就是下面这段代码

const x = function (){
    let count的变量 = 0
    return function y(){ // 访问了外部变量的函数
      count += 1
    }
}()

x()
// 相当于
y()
// 相当于
count += 1

可以解决什么问题呢:

  1. 避免污染全局环境。(因为用的是局部变量)
  1. 提供对局部变量的间接访问。(因为只能 count += 1 不能 count -= 1)
  1. 维持变量,使其不被垃圾回收。

但是闭包使用不当可能造成内存泄露