闭包(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 的作用域。