理解js中的闭包

179 阅读1分钟

js中的闭包

闭包是js中的一种语法特性

闭包 = 函数+自由变量

对于一个函数来说,变量分为:全局变量,本地变量,自由变量

let num
function add(){
    //访问了外部变量的函数
    num += 1
}

把上面代码放在[非全局环境]里,就是闭包

!!! 主要,闭包不是num ,闭包也不是add ,闭包是num+add组成的整体

解决了什么问题

1:避免污染全局环境。(因为用的是局部变量)

2:提供对局部变量的间接访问,(因为只能 num += 1 不能 num -= 1)

3:维持变量,使其不被垃圾回收