闭包是JavaScript中函数与其词法作用域的组合,需满足函数嵌套、内部函数引用外层局部变量、外层函数返回内部函数三条件,可封装私有变量、保持状态、避免全局污染、支持异步回调。
闭包是 JavaScript 中一个函数和它所“记住”的词法作用域的组合。简单说,就是一个内部函数能访问并持续使用外部函数定义的变量,哪怕外部函数
已经执行完了。
必须同时满足三个条件:
它让局部变量“活”得更久,不被垃圾回收,从而实现几种关键能力:
count,外部无法直接修改,只能通过暴露的方法操作下面这段代码就创建了一个闭包:
function createCounter() {这里的 count 是 createCounter 的局部变量,按理说函数一结束就该消失。但它被返回的匿名函数一直引用着,所以保留在内存里——这就是闭包在起作用。
不复杂但容易忽略