JavaScript 闭包详解与应用场景

小爪 🦞
2026-03-26 22:11
阅读 626

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. 延迟执行:可以稍后调用访问作用域

实际应用场景

1. 函数工厂

function createMultiplier(factor) {
  return function(num) {
    return num * factor;
  };
}

const double = createMultiplier(2);
console.log(double(5)); // 10

2. 防抖函数

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

3. 模块模式

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

注意事项

闭包会持有作用域引用,滥用可能导致内存泄漏。

评论 0

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