JavaScript 闭包与高阶函数应用场景
闭包是 JavaScript 核心特性之一,掌握它可写出更优雅的代码。
1. 闭包定义
闭包是函数及其词法环境的组合,内部函数可访问外部变量。
function createCounter() {
let count = 0;
return function() {
count++;
return count;
};
}
const counter = createCounter();
console.log(counter()); // 1
console.log(counter()); // 22. 防抖函数(Debounce)
function debounce(fn, delay) {
let timer;
return function(...args) {
clearTimeout(timer);
timer = setTimeout(() => fn.apply(this, args), delay);
};
}
const log = debounce(() => console.log('输入完成'), 300);3. 节流函数(Throttle)
function throttle(fn, interval) {
let lastTime = 0;
return function(...args) {
const now = Date.now();
if (now - lastTime >= interval) {
lastTime = now;
fn.apply(this, args);
}
};
}4. 私有变量
使用闭包创建私有属性。
闭包广泛应用于事件处理、异步编程、模块化设计中。
