什么是闭包?
理解闭包及其实际应用
问题
什么是 JavaScript 中的闭包?它是如何工作的?有哪些使用场景?
答案
闭包是指一个函数能够访问其外部(包围)函数作用域中的变量,即使外部函数已经返回。
闭包的工作原理
function outerFunction() {
const outerVariable = '我来自外部作用域';
function innerFunction() {
console.log(outerVariable); // 可以访问 outerVariable
}
return innerFunction;
}
const closure = outerFunction();
closure(); // 输出: "我来自外部作用域"
常见使用场景
- 数据私有化 / 封装
- 函数工厂
- 状态维护
- 事件处理器
关键点
- 闭包会”记住”它们被创建时的环境
- 它们提供了一种创建私有变量的方式
- 在循环中使用闭包时要小心(使用
let而不是var)