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

发表回复 0

Your email address will not be published.