JavaScript闭包

52 阅读1分钟

JavaScript闭包

JavaScript闭包是JavaScript中一个非常重要的概念。虽然它可能有点难以理解,但是它是很有用的,因此值得花些时间学习它。在本文中,我将向您介绍JavaScript闭包的概念、实现和使用场景。

什么是JavaScript闭包?

JavaScript闭包是指一个函数可以访问并操作它定义时所在的词法作用域中的变量.即使该函数在定义时所在的作用域已经销毁。闭包是由函数和与其相关的引用环境组成的。

让我们看一个简单的例子来理解这个概念。在下面的代码中,函数outer返回另一个函数inner。在inner中,我们可以访问外部函数outer的变量count

function outer() {
  var count = 0;
  function inner() {
    count++;
    console.log(count);
  }
  return inner;
}

var closure = outer();
closure(); // 输出1
closure(); // 输出2
closure(); // 输出3

JavaScript闭包的实现方式

JavaScript闭包的实现方式有两种:函数作为返回值和函数作为参数。

在函数作为返回值的情况下,内部函数可以访问外部函数的变量和参数。这是因为当外部函数返回内部函数时,它们的词法作用域被捕获并保存在内存中,因此内部函数可以继续访问它们。

function outer(x) {
  return function(y) {
    return x + y;
  }
}

var add5 = outer(5);
console.log(add5(3)); // 输出8

后续完善