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

闭包是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 的值。

闭包的作用

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

桑稚远方~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值