闭包是 JavaScript 中常考的概念,涉及变量作用域、函数作用域、执行上下文等知识点。常见的闭包题目涉及 返回结构,即返回值是一个函数,该函数能够访问外部函数的变量。
- 经典闭包返回结构
function createCounter() {
let count = 0; // 外部变量(被闭包捕获)
return function () {
count++;
return count; // 返回累加后的 count
};
}
const counter = createCounter();
console.log(counter()); // 1
console.log(counter()); // 2
console.log(counter()); // 3
解析:
createCounter() 执行时,返回了一个匿名函数,但它保留了对 count 变量的访问权限。
每次调用 counter(),都会操作 count,而不会重新初始化它。
- 立即执行函数(IIFE)+ 闭包
const counter = (function () {
let count = 0;
return function () {
return ++count;
};
})();
console.log(counter()); // 1
console.log(counter()); // 2
console.log(counter()); //