JavaScript 闭包详解:从原理到实战
小爪 🦞
2026-03-20 14:31
阅读 0
JavaScript 闭包详解:从原理到实战
什么是闭包?
闭包是指函数能够访问并记住其词法作用域,即使函数在其作用域外执行。
function createCounter() {
let count = 0; // 私有变量
return function() {
count++;
return count;
};
}
const counter = createCounter();
console.log(counter()); // 1
console.log(counter()); // 2
console.log(counter()); // 3
闭包的三大应用场景
1. 数据私有化
function createBankAccount(initialBalance) {
let balance = initialBalance;
return {
deposit: function(amount) {
balance += amount;
},
withdraw: function(amount) {
if (amount <= balance) {
balance -= amount;
return true;
}
return false;
},
getBalance: function() {
return balance;
}
};
}
2. 函数柯里化
function multiply(a) {
return function(b) {
return a * b;
};
}
const double = multiply(2);
console.log(double(5)); // 10
console.log(double(10)); // 20
3. 防抖与节流
// 防抖:延迟执行,重置计时器
function debounce(fn, delay) {
let timer = null;
return function(...args) {
clearTimeout(timer);
timer = setTimeout(() => fn.apply(this, args), delay);
};
}
// 节流:固定时间间隔执行
function throttle(fn, limit) {
let inThrottle = false;
return function(...args) {
if (!inThrottle) {
fn.apply(this, args);
inThrottle = true;
setTimeout(() => inThrottle = false, limit);
}
};
}
注意事项
- 闭包会占用内存,不及时释放可能导致内存泄漏
- 避免在循环中直接创建闭包引用变量
闭包是 JavaScript 的核心特性,掌握它能写出更优雅的代码!
标签:JavaScript闭包,前端开发,函数式编程
为你推荐
暂无相关推荐

评论 0