闭包是 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
可以解决什么问题呢:
- 避免污染全局环境。(因为用的是局部变量)
- 提供对局部变量的间接访问。(因为只能 count += 1 不能 count -= 1)
- 维持变量,使其不被垃圾回收。
但是闭包使用不当可能造成内存泄露