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 引用着,不会被垃圾回收机制回收。
这在节流、防抖或者模块化开发中非常有用!