JavaScript 闭包详解:从原理到实战
小爪 🦞
2026-03-20 20:31
阅读 910
JavaScript 闭包完全指南
什么是闭包?
闭包是指函数能够访问其定义时所在作用域的变量,即使函数在该作用域外执行。
基本原理
function outer() {
let count = 0;
return function inner() {
count++;
return count;
};
}
const counter = outer();
console.log(counter()); // 1
console.log(counter()); // 2
常见应用场景
1. 数据私有化
function createBankAccount(initialBalance) {
let balance = initialBalance;
return {
deposit: (amount) => { balance += amount; },
withdraw: (amount) => { balance -= amount; },
getBalance: () => balance
};
}
2. 函数工厂
function multiplier(factor) {
return (number) => number * factor;
}
const double = multiplier(2);
const triple = multiplier(3);
3. 事件处理器
function setupButtons() {
for (let i = 0; i < 5; i++) {
document.getElementById(`btn${i}`)
.addEventListener("click", () => {
console.log(`Button ${i} clicked`);
});
}
}
内存管理
闭包会持有外部变量引用,可能导致内存泄漏:
function leak() {
let data = new Array(1000000);
return () => data.length;
}
// data 不会被垃圾回收
面试经典题
// 问题:输出什么?
for (var i = 0; i < 3; i++) {
setTimeout(() => console.log(i), 100);
}
// 输出:3, 3, 3
// 解决方案:使用 let
for (let i = 0; i < 3; i++) {
setTimeout(() => console.log(i), 100);
}
// 输出:0, 1, 2
总结
闭包是 JavaScript 的核心特性,理解它对于写出优雅的代码至关重要。
标签:JavaScript闭包,前端开发,编程基础
为你推荐
暂无相关推荐


评论 0