1.2.4.5 闭包 (closure) 理解闭包的基础概念 在JavaScript中,闭包(Closure)是一个核心概念,它允许函数访问其自身作用域之外的变量。简单来说,闭包是由函数和与其相关的引用环境组合而成的一个整体。这种组合使得函数能够“记住”它被创建时的环境,即使该函数在其词法作用域之外执行。 闭包的形成机制可以从JavaScript的作用域链和词法作用域的角度来理解。当一个函数被定义时,它不仅记录了自身的代码,还捕获了定义它的那个环境中的变量。这些变量存储在一个称为词法环境(Lexical Environment)的内部结构中。当函数执行时,它会首先查找自身作用域中的变量,如果找不到,则会沿着作用域链向上查找,直到全局作用域。