JS闭包原理与应用经典示例

JS闭包是指一个函数能够访问它的外部函数作用域中定义的变量,即使在外部函数返回之后依然有效。

JS闭包原理

在JavaScript中,函数是一等公民,即函数可以作为参数、可以返回值、可以嵌套在另一个函数中,形成闭包。

当函数内部有东西被引用,这里面所引用的内容会一直存在,不会被垃圾回收器清除,这就形成了闭包。

在函数内部定义一个函数,内部函数可以访问外部函数的变量。当外部函数返回时,内部函数仍然可以访问外部函数的变量,这就是闭包。

JS闭包的应用经典示例

1. 实现私有变量

一个普通的函数,内部定义了一个变量a,外部无法访问a:

function aa() {
  var a = 5;
  function f() {
    return a;
  }
}

在上述函数的基础上,定义一个返回函数f的函数,外部可以访问这个闭包函数f,从而访问到a:

function aa() {
  var a = 5;
  return function f() {
    return a;
  }
}

在上述代码中,闭包函数f可以访问a,但是a是私有变量,外部不能修改。由于JavaScript没有块级作用域,使用闭包是实现私有变量的常用方法。

2. 缓存运算结果

在一些需要频繁调用的函数中,使用闭包可以减少不必要的重复计算。例如一个计算乘积的函数:

function multiply(x, y) {
  return x * y;
}

频繁调用multiply函数,需要不停计算乘积。可以使用闭包缓存上次的计算结果,减少重复计算:

function multiply() {
  var cache = {};
  return function(x, y) {
    var key = x + '*' + y;
    if (key in cache) {
      return cache[key];
    } else {
      var result = x * y;
      cache[key] = result;
      return result;
    }
  }
}

上述代码中,定义了一个缓存对象cache,使用key记录x和y的值,如果已经有缓存结果,直接返回,否则计算结果并存入缓存。在之后的调用中,如果发现缓存中已经有计算结果,就直接返回缓存结果,避免了重复计算。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS闭包原理与应用经典示例 - Python技术站

(0)
上一篇 2023年6月11日
下一篇 2023年6月11日

相关文章

  • SUN的《AJAX与J2EE》全文译了

    好的。首先,要全文翻译 SUN 的《AJAX 与 J2EE》文档,需要先下载该文档,然后使用翻译软件或者通过人工翻译的方式进行翻译。在这个过程中,需要注意以下几点: 确认目标语言,比如翻译成中文、日文、韩文等等,同时需要尽可能保证翻译的准确性、专业性和流畅性。 在进行翻译时,需要考虑到 Markdown 格式的特点,比如代码块、标题、列表等等,需要在翻译中保…

    JavaScript 2023年6月11日
    00
  • 详解微信小程序胶囊按钮返回|首页自定义导航栏功能

    下面是详解微信小程序胶囊按钮返回|首页自定义导航栏功能的完整攻略: 一、胶囊按钮返回 微信小程序提供了一个叫做胶囊按钮的组件,位于小程序右上角,它包含了小程序的图标和名称,并且还具备返回功能。我们可以使用它来方便地返回上一个页面,以下是实现方法: 首先,在页面的顶部布局一个用于显示胶囊按钮的容器: <!– wxml –> <view c…

    JavaScript 2023年6月11日
    00
  • bootstrap日期插件daterangepicker使用详解

    Bootstrap日期插件daterangepicker使用详解 介绍 Daterangepicker是一个Bootstrap风格的日期范围选择器插件。它可以让用户直接在页面上快速选择时间段,而不需要手动输入。它可以与Moment.js和jQuery结合起来使用。本篇攻略将介绍如何使用Daterangepicker插件进行日期范围选择。 步骤 1.获取插件 …

    JavaScript 2023年6月10日
    00
  • JS 自动安装exe程序

    JS 自动安装 exe 程序是一种自动安装程序的方法,主要用于后台自动安装某些特定的软件或工具。这种方法主要依赖于 JavaScript 的特性,在浏览器中实现自动下载和安装 exe 程序。 下面是 JS 自动安装 exe 程序的完整攻略: 安装准备 确认要安装的 exe 程序是否可以通过 JS 自动安装; 准备一个可以直接下载 exe 程序的链接(可以是百…

    JavaScript 2023年5月27日
    00
  • JS中的一些常用的函数式编程术语

    关于“JS中的一些常用的函数式编程术语”,下面是一份完整的攻略。 函数式编程术语简介 函数式编程是一种编程范式,它强调将计算过程看作是函数之间的相互调用。在函数式编程中,我们写的代码是由许多小的函数组成的,每个函数都是不可变的,并且不影响外部环境的状态。 在函数式编程中,有许多术语和概念,这些概念可以让你更好地理解函数式编程和编写更好的代码。 纯函数 在函数…

    JavaScript 2023年5月27日
    00
  • Javascript Date getUTCDate() 方法

    JavaScript 中的 getUTCDate() 方法用于获取 UTC 时间的日期部分。在本教程中,我们将详细介绍 getUTCDate() 方法的使用方法。 getUTCDate() 方法的基本语法如下: date.getUTCDate() 其中,date 是获取日期部分的 UTC 日期对象。 以下两个示例说明: 示例一:使用 getUTCDate()…

    JavaScript 2023年5月11日
    00
  • JS数组Array常用方法汇总+实例

    JS数组Array常用方法汇总+实例 在JavaScript中,数组是一种非常重要的数据类型。它可以用来存储多个值,并且可以通过下标来访问和修改数组中的元素。JavaScript提供了很多常用的数组方法,可以使数组的操作更加方便快捷。下面我们就来详细讲解一下这些常用的数组方法。 一、创建数组 要创建一个数组,有多种方式: 1. 直接声明 let arr1 =…

    JavaScript 2023年5月27日
    00
  • JavaScript操作选择对象的简单实例

    下面我将为您详细讲解“JavaScript操作选择对象的简单实例”的完整攻略。 1. 选择对象 要操作 HTML 中的元素,我们必须首先找到它。找到元素的最常用方法是使用 id 属性。我们可以使用 document.getElementById() 方法来选择一个有 id 的元素。 比如,我们有如下HTML代码: <div id="demo&…

    JavaScript 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部