什么是闭包?
function A() {
let a = 1
function B() {
console.log(a)
}
return B
}
var test = A()
test() // 1
在上述例子中,函数A返回了一个函数B,并且B中使用了函数A的变量,函数B就是闭包。闭包的意义就是我们能够访问函数内部的变量。
但闭包有好有坏
- 优点:隐藏变量,避免外界或全局变量的污染;方便设计私有方法和变量、特权变量、储存变量,从而实现封装和缓存等。
- 缺点:闭包会常驻内存,会增大内存使用量,使用不当很容易造成内存泄露。