面试题答案
一键面试function outerFunction(initValue) {
return function innerFunction() {
initValue++;
return initValue;
};
}
// 使用示例
const counter = outerFunction(5);
console.log(counter()); // 输出 6
console.log(counter()); // 输出 7
闭包在此处的作用是:当 outerFunction
执行完毕返回 innerFunction
后,innerFunction
依然可以访问到 outerFunction
作用域中的 initValue
变量。这是因为 innerFunction
形成了一个闭包,它将 outerFunction
的作用域“封闭”在内部,使得 initValue
不会因为 outerFunction
的执行结束而被垃圾回收机制回收。每次调用 innerFunction
时,都是在这个被“封闭”的作用域中对 initValue
进行操作,所以能够保存 initValue
的状态并进行自增操作。