闭包(Closure) 是 JavaScript 中的一个重要概念,主要特点如下:

  • 函数嵌套:闭包通常是一个嵌套的函数。
  • 访问外层变量:内部函数可以访问其外层函数的变量。
  • 持久化作用域:即使外层函数已经执行完毕,其作用域仍然被内部函数“记住”。

闭包示例:

1
2
3
4
5
6
7
8
9
10
11
12
function outerFunction() {
  let outerVariable = "I'm from outerFunction";

  function innerFunction() {
    console.log(outerVariable); // 访问外层变量
  }

  return innerFunction; // 返回内部函数
}

const closure = outerFunction(); // outerFunction 执行并返回 innerFunction
closure(); // 调用 innerFunction,输出: I'm from outerFunction

innerFunction 是闭包,即使 outerFunction 已经执行完毕,innerFunction 仍然可以访问 outerVariable,因为它“记住”了 outerFunction 的作用域。

作者 菜园君