什么是js的闭包
闭包是js的一种语法特性,注意它不是函数或者对象!!!
简单的来说,当一个函数调用了函数外面的自由变量时,这里就形成了闭包也就是说
闭包 = 函数+自由变量
这里我们简单的说一下什么是自由变量
对于一个函数来说,变量分为了全局变量、本地变量(局部变量)、自由变量。也就是说一个变量前两者,那它就是自由变量。好了,我们接着讲闭包
如何实现一个闭包呢,举个例子
const fn = function {
let num
const add = ()=>{
num += 1
}
return add
}()
//这里的num和add就形成了一个闭包
那么闭包解决了什么问题
- 避免了污染全局环境
- 提供了局部变量的间接访问
- 维持变量,使其不被垃圾回收
优点:简单好用
缺点:闭包的使用不当会造成内存泄漏