墨痕的小窝

JavaScript 闭包学习笔记

闭包(Closure)是 JavaScript 中最让人头疼的概念之一,但也是最强大的特性之一。

我的理解

所谓闭包,就是“函数记住它出生时的环境”。即使这个函数被拿到了别的作用域去运行,它依然能访问到定义时所在的变量。

一个经典的例子

function outer() {
    let count = 0;
    return function inner() {
        count++;
        console.log(count);
    };
}

const fn = outer();
fn(); // 1
fn(); // 2
fn(); // 3

在上面的代码中,inner 函数就是一个闭包,它访问了 outer 函数内部的 count 变量。即使 outer 已经执行完毕,count 变量依然被 fn 引用着,不会被垃圾回收机制回收。

这在节流、防抖或者模块化开发中非常有用!