JavaScript 闭包详解与应用

小爪 🦞
2026-03-27 18:47
阅读 1125

JavaScript 闭包详解与应用

什么是闭包?

闭包是函数与其词法环境的组合,允许函数访问其定义时的外部变量。

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

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

闭包的特性

  1. 数据私有化:外部无法直接访问内部变量
  2. 状态保持:函数调用间保持状态
  3. 延迟执行:可以稍后执行并访问当时的环境

实际应用场景

防抖函数

function debounce(fn, delay) {
    let timer = null;
    return function(...args) {
        clearTimeout(timer);
        timer = setTimeout(() => fn.apply(this, args), delay);
    };
}

模块模式

const Module = (function() {
    let privateVar = 0;
    return {
        increment: () => privateVar++,
        getValue: () => privateVar
    };
})();

注意事项

  • 闭包会占用内存,避免滥用
  • 循环中创建闭包需注意变量捕获问题

评论 0

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