前端一定要学的知识点-闭包

闭包是js面试中常问的问题,这篇文章希望能给大家帮助

闭包(Closures)

介绍

闭包是一种在 JavaScript 中常见的概念。它允许函数访问其词法作用域外部的变量,并在函数的生命周期内保持对这些变量的引用。通过闭包,我们可以创建具有持久性状态的函数。

示例代码

// 定义一个外部函数
function outerFunction() {
  var outerVariable = 'I am outside!';

  // 定义内部函数(闭包)
  function innerFunction() {
    var innerVariable = 'I am inside!';
    console.log(outerVariable); // 访问外部变量
    console.log(innerVariable); // 访问内部变量
  }

  // 返回内部函数
  return innerFunction;
}

// 创建闭包函数实例
var closure = outerFunction();

// 调用闭包函数
closure();

代码解释

  1. 定义了一个外部函数 outerFunction(),它包含一个名为 outerVariable 的局部变量。
  2. outerFunction() 内部定义了一个名为 innerFunction() 的内部函数,它包含一个名为 innerVariable 的局部变量。
  3. innerFunction() 作为闭包函数被返回给外部调用者。
  4. 创建了一个闭包函数实例 closure,它实际上是 innerFunction 的一个引用,并且包含了 outerFunction 的词法作用域。
  5. 调用 closure(),它会输出外部变量 outerVariable 和内部变量 innerVariable 的值。

闭包的作用

  • 保护变量:闭包可以隐藏变量,使其在函数外部不可访问,但在函数内部仍然可用。
  • 保存状态:闭包可以创建一个持久性状态,使函数在每次调用时都能记住之前的状态。
  • 实现私有成员:通过闭包,可以模拟实现私有变量和方法的概念。
  • 简洁来说就是,为了实现局部变量的共享性和持久化,同时避免对全局变量的污染。

你可能感兴趣的:(前端,javascript,闭包,前端面试题)