闭包是函数与其创建时的词法环境的组合。函数在外部执行时,仍然可以访问定义位置的变量。
JavaScript
function createCounter() {
let count = 0;
return () => ++count;
}
const next = createCounter();
next();
next();
常见应用:封装私有状态、函数柯里化,以及保存回调所需的上下文。
面试追问:闭包不会必然导致内存泄漏;问题是长期存活的回调可能使其捕获的对象持续可达。应及时移除无用的事件监听、计时器和订阅。