什么是闭包
废话少说,直接上代码,首先通过下面一段代码来理解
const createAdd = ()=>{
let n = 0
return ()=>{
n += 1
console.log(n)
}
}
const add = createAdd()
add() // 1
add() // 2
之前了解到作用域概念,从这段代码中可以看到,n这个变量是在createAdd()这函数的作用域中声明的,并没有在箭头函数中声明,但是在箭头函数中使用了n,这个时候就理解了闭包什么:,还有一种情况,就是使用完被内存释放后,这时n该何去何从呢?此时n并不会被内存回收,它的内存回收是在createAdd()被释放后被回收,这就引出了闭包的另外一个作用:
用途
通过上面的分析,我们就可以使用闭包隐藏局部变量,暴露操作函数
缺点
那么它的缺点就是容易泄露内存。注意的是,真实原因是JS引擎的实现有问题,但是网上已经以讹传讹了。