SOURCE

function counter() {
  let count = 0;

  return function() {
    return ++count;
  }
}

const increment = counter();

console.log(increment()); // 1
console.log(increment()); // 2
console.log(increment()); // 3

// counter 函数返回了一个函数,
// 这个返回的函数形成了一个闭包。
// 在这个闭包中,有一个变量 count,这个变量只能被返回的函数访问,而外部函数无法访问。
// 闭包的作用在于可以将变量隐藏在函数内部,
// 从而避免变量污染全局作用域。
// 同时,闭包还可以保存函数执行时的状态,
// 让这些状态得以保留并在以后的调用中重用。
// 在实际开发中,闭包常常用于实现私有成员和单例模式等。
console 命令行工具 X clear

                    
>
console