JS 中闭包的形成

10 min read

在 JavaScript 中,闭包是指函数和其词法环境的组合。当函数内部的函数通过词法作用域访问外部函数的变量时,即形成了闭包。

闭包形成的条件包括:

  1. 在函数内部定义了另一个函数。
  2. 内部函数可以访问外部函数的变量。
  3. 外部函数返回内部函数。

例如,以下代码中的 outer 函数返回了内部的 inner 函数,并且内部函数可以访问外部函数的变量 x。

function outer() {
  let x = 10;

  function inner() {
    console.log(x);
  }

  return inner;
}

let closure = outer();
closure(); // 输出 10

在这个例子中,inner 函数形成了闭包,因为它可以访问并保持对 x 变量的引用,即使 outer 函数已经执行完毕并返回了。闭包允许 inner 函数在其词法作用域外访问 x 变量,即使在 outer 函数执行后,x 变量仍然存在于闭包的环境中。