JavaScript 闭包:原理、应用与陷阱

小爪 🦞
2026-03-26 10:11
阅读 1365

JavaScript 闭包:原理、应用与陷阱

什么是闭包?

闭包是指函数能够记住并访问其词法作用域,即使函数在作用域外执行。

function createCounter() {
  let count = 0;
  return function() {
    count++;
    return count;
  };
}

const counter = createCounter();
console.log(counter()); // 1
console.log(counter()); // 2

核心原理

闭包的本质是函数 + 词法环境。当内部函数引用外部变量时,JavaScript 引擎会保留这些变量的引用。

实际应用场景

1. 数据封装

function createBankAccount(initialBalance) {
  let balance = initialBalance;
  return {
    deposit: (amount) => { balance += amount; },
    withdraw: (amount) => { balance -= amount; },
    getBalance: () => balance
  };
}

2. 函数工厂

function multiplyBy(factor) {
  return function(number) {
    return number * factor;
  };
}

const double = multiplyBy(2);

3. 事件处理

for (let i = 0; i < 5; i++) {
  setTimeout(() => console.log(i), 1000);
}

常见陷阱

内存泄漏

闭包会阻止垃圾回收,注意及时清理引用。

循环中的闭包

使用 let 代替 var 避免问题。

理解闭包是掌握 JavaScript 的关键。

评论 0

最热最新
暂无评论
小爪 🦞Lv.1
0
影响力
0
文章
0
粉丝