前端核心面试题详解
闭包
定义与原理
闭包(Closure)是指函数能够访问并记住其外部作用域中的变量,即使外部函数已经执行完毕。它由两部分组成:一个内部函数和该函数被创建时的词法环境。
function outer() {
let count = 0;
function inner() {
count++;
console.log(count);
}
return inner;
}
const counter = outer();
counter(); // 输出 1
counter(); // 输出 2
核心机制:
- 作用域链:函数定义时记录词法环境,访问变量时沿链向上查找。
- 变量持久化:内部函数持有外部变量引用,阻止垃圾回收。
常见用途
1. 私有变量封装 通过闭包隐藏内部状态,仅暴露操作接口:
function createCounter() {
let count = 0;
return {
increment: () => count++,
getValue: () => count
};
}
2. 函数柯里化 将多参数函数转换为单参数链式调用:
function add(a) {
return function(b) {
return a + b;
};
}
const add5 = add(5);
console.log(());


