前端知库

什么是闭包?它有哪些实际应用?

理解词法作用域,以及函数如何保留对外部变量的访问。

参考答案

闭包是函数与其创建时的词法环境的组合。函数在外部执行时,仍然可以访问定义位置的变量。

JavaScript
function createCounter() {
  let count = 0;
  return () => ++count;
}
const next = createCounter();
next(); // 输出:1
next(); // 输出:2

常见应用:封装私有状态、函数柯里化,以及保存回调所需的上下文。

面试追问:闭包不会必然导致内存泄漏;问题是长期存活的回调可能使其捕获的对象持续可达。应及时移除无用的事件监听、计时器和订阅。