js中的闭包
闭包是js中的一种语法特性
闭包 = 函数+自由变量
对于一个函数来说,变量分为:全局变量,本地变量,自由变量
let num
function add(){
//访问了外部变量的函数
num += 1
}
把上面代码放在[非全局环境]里,就是闭包
!!! 主要,闭包不是num ,闭包也不是add ,闭包是num+add组成的整体
解决了什么问题
1:避免污染全局环境。(因为用的是局部变量)
2:提供对局部变量的间接访问,(因为只能 num += 1 不能 num -= 1)
3:维持变量,使其不被垃圾回收