闭包(Closure)是指函数与其包含的词法环境(lexical environment)的组合。简单来说,闭包是指可以访问其词法作用域外部变量的函数。
在 JavaScript 中,函数可以访问它被创建时所处的词法作用域中的变量,即使函数在定义之后被传递到其他作用域,它仍然可以访问定义时的作用域中的变量。
示例:
function outerFunction() {
let outerVariable = 'I am from outer';
function innerFunction() {
console.log(outerVariable); // 内部函数可以访问外部函数的变量
}
return innerFunction;
}
const closureFunc = outerFunction(); // 调用外部函数,返回内部函数
closureFunc(); // 输出:I am from outer
在这个例子中,outerFunction 内部的 innerFunction 可以访问外部函数 outerFunction 中的 outerVariable 变量。即使 outerFunction 执行完毕,closureFunc 仍然可以访问并保持对 outerVariable 的引用,形成闭包。
闭包在 JavaScript 中常用于保持函数内部的状态,允许函数访问其词法作用域外部的变量,实现函数的持久性和私有性。利用闭包,可以创建特定情况下的私有变量、模块化和某些设计模式的实现。
Was this helpful?
0 / 0