学习资料 / JavaScript

闭包与作用域

闭包是 JavaScript 中最容易被问到、也最容易答得不清不楚的概念。

先盯住什么

函数”记住”了它被创建时所在作用域里的变量。关键词:词法作用域

易混淆

闭包不是”把变量拷贝一份”,它引用的是原变量,循环里最常踩坑。

定义

一个函数,加上它在定义时能访问到的外部作用域变量的引用,就构成了闭包。

典型场景

function makeCounter() {
  let count = 0;
  return () => ++count;
}

内存泄漏

如果闭包长期持有不再需要的大对象引用,会阻止 GC 回收,导致内存泄漏。