闭包访问的是外部函数的变量对象,而非全局变量,形成私有作用域,从而实现数据封装。

论据/示例

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 外部无法直接访问
  • 闭包函数被返回后,仍持有对外部函数变量对象的引用
  • 外部无法直接访问这些变量,只能通过闭包提供的接口

关联