闭包访问的是外部函数的变量对象,而非全局变量,形成私有作用域,从而实现数据封装。
论据/示例
function createCounter() {
let count = 0;
return {
increment() { count++; return count; },
decrement() { count--; return count; },
getCount() { return count; }
};
}
const counter = createCounter();
counter.increment(); // 1
counter.increment(); // 2
counter.getCount(); // 2
// count 外部无法直接访问- 闭包函数被返回后,仍持有对外部函数变量对象的引用
- 外部无法直接访问这些变量,只能通过闭包提供的接口