含义: 闭包就是有权访问另一个函数内部变量的函数
闭包(closure)是一个函数以及其捆绑周边环境状态的引用组合 .
JavaScript中,闭包会随着函数创建而被同时创建。
常见的闭包就是在一个函数内创建另一个函数 创建的函数可以访问到当前函数的局部变量
闭包有两个常用的用途:
- 闭包的第一个用途是使我们在函数外部能够访问到函数内部的变量 。 通过使用闭包 ,可以通过在外部调用闭包函数 从而在外部访问到函数内部的变量,可以使用这种方法来创建私有变量
- 闭包的另一个用途使已经运行结束的函数上下文的变量对象继续留在内存中,因为闭包函数保留了这个变量对象的引用,所以这个变量对象不会被回收。
比如,函数A内部有一个函数B,函数B可以访问到函数A中的变量 那么函数B就是闭包。
function A(){
let a=1
window.B=function () {
console.log(a)
}
}
A()
B() //闭包
闭包的缺点:造成内存泄漏或溢出
使用场景:
- 柯里化函数
- 使用闭包模拟私有方法
- 防抖节流