闭包(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