JS进阶-闭包

news2024/11/26 5:55:24

概念:一个函数对周围状态的引用捆绑在一起,内层函数中访问到其外层函数的作用域

简单理解:闭包(Closure)=内层函数+外层函数的变量

function outer() {
      const a = 1
      function f() {
        console.log(a)
      }
      f()
    }
outer()

闭包作用:封闭数据,实现数据私有,外部也可以访问函数内部的变量

基本格式:

function outer() {
      let i = 1
      function fn() {
        console.log(i)
      }
      return fn
    }
const fun = outer()
fun()

或简写为:

function outer() {
      let i = 1
      return function () {
        console.log(i)
      }
    }
const fun = outer()
fun()

闭包应用:实现数据的私有,防止数据被别人在外部篡改

比如,我们要做个统计函数调用次数,函数调用一次,就++

function count() {
      let i = 0
      return function () {
        i++
        console.log(`函数被调用了${i}次`)
      }
    }
const fun = count()
fun()

但是闭包会有内存泄漏的问题

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1042793.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

最新商道融绿ESG数据(2015-2023)

数据简介:环境、社会和公司治理(environmental, social, and corporate governance, 简称ESG)方面的非财务信息已经普遍被用于评估企业在可持续发展方面的绩效。投资者通过考察上市公司的ESG绩效,便于识别企业面临的风险&#xff…

L1-033 出生年 c++解法

一、题目再现 以上是新浪微博中一奇葩贴:“我出生于1988年,直到25岁才遇到4个数字都不相同的年份。”也就是说,直到2013年才达到“4个数字都不相同”的要求。本题请你根据要求,自动填充“我出生于y年,直到x岁才遇到n个…

ElementUI之动态树+数据表格+分页

目录 一.ElementUI动态树 编写left.vue界面 配置url ​编辑 建立书籍的页面 编写路由 显示子主键的类 测试结果 二.ElementUI数据表格分页 在booklist中编写数据表格和分页 编写url路径 测试结果 ​编辑 一.ElementUI动态树 编写left.vue界面 <template>…

OpenAI 更新 ChatGPT:支持图片和语音输入【附点评】

一、消息正文 9月25日消息,近日OpenAI宣布其对话AI系统ChatGPT进行升级,添加了语音输入和图像处理两个新功能。据OpenAI透露,这些新功能将在未来两周内面向ChatGPT Plus付费用户推出,免费用户也将很快可以使用这些新功能。这标志着ChatGPT继续朝着多模态交互的方向发展,为用户提…

3D 视觉市场空间广阔,3D 感知龙头全技术路线布局

3D 视觉市场尚处在发展早期,空间广阔 人类 70%以上信息通过眼睛获取,对于机器而言,视觉感知也是其“智能化”升级的重要基础。3D 成像让每一个像素除 x、y 轴数据外,还有 z 轴(深度/距离)数据。围绕着人体、物体、空间扫描一圈,就能得到点云图和精准的“1:1”还原的 3D …

abaqus命令行基础

1.abaqus命令行基础 使用 abaqus 时&#xff0c;如果需要进行参数分析&#xff0c;就需要生成大量的模型&#xff0c;这时一般会使用python文件定义函数进行批量生成并计算。 如果已经生成了计算文件(*.inp文件)&#xff0c;那么就可以直接在命令行进行求解&#xff0c;abaqu…

自动化测试框架pytest命令参数

【软件测试面试突击班】如何逼自己一周刷完软件测试八股文教程&#xff0c;刷完面试就稳了&#xff0c;你也可以当高薪软件测试工程师&#xff08;自动化测试&#xff09; 失败后停止 使用下面的参数可以让测试在第1(N)次测试失败后停止&#xff1a; pytest ‐x # 第一次测试…

【大数据存储与处理】1. hadoop单机伪分布安装和集群安装

0. 写在前面 0.1 软件版本 hadoop2.10.2 ubuntu20.04 openjdk-8-jdk 0.2 hadoop介绍 Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下&#xff0c;开发分布式程序。充分利用集群的威力进行高速运算和存储。Hadoop实现了一个…

数据结构_红黑树

1、二叉树 每一个分支不能超过两个 2、 排序数/查找树 在二叉树的基础上&#xff0c;元素是有大小顺序的左 子树 小&#xff0c;右 子树 大 3、平衡树 左孩子数 和 右孩子数 相等 4、不平衡树 5、 红黑树 特点&#xff1a;趋近于平衡树&#xff0c;查询的速度非常的快&#xf…

【论文笔记】A Review of Motion Planning for Highway Autonomous Driving

文章目录 I. INTRODUCTIONII. CONSIDERATIONS FOR HIGHWAY MOTION PLANNINGA. TerminologyB. Motion Planning SchemeC. Specificities of Highway DrivingD. Constraints on Highway DrivingE. What Is at Stake in this Paper III. STATE OF THE ARTA. Taxonomy DescriptionB…

全新iphone15 pro max拆解,内部元件供应链曝光 | 百能云芯

苹果顶级版iPhone 15 Pro Max热销&#xff0c;国外维修网站ifixit拆解内部零组件后评估&#xff0c;苹果在电源、无线通讯、音频等关键元件比重增加。台企华邦电子供应编码型快闪存储器&#xff08;NOR Flash&#xff09;。 苹果&#xff08;Apple&#xff09;iPhone 15 Pro Ma…

Powershell 实现禁用密码复杂性,空密码

前提条件 开启wmi,配置网卡,参考 实现一键关闭密码策略和远程空密码登录 最近客户需要的一个无法理解的需求,需要远程登录不输入密码,安全性没有了还要实现,没办法客户是上帝,客户怎么开心怎么来都行,安全性问题告知不重视,实际环境不建议一下操作,只要联网你被黑的哦…

《重磅发布 | 80+大屏组件模板,即刻下载、快速构建应用!遥遥领先~》

smardaten没有酱香拿铁、没有李佳琦79元的眉笔套餐…… 但给大家准备了50可视化应用模板、30页面组件模板&#xff0c;免费用&#xff01;这不比酱香拿铁香&#xff1f; 其实&#xff0c;自今年2月份商超上线以来&#xff0c;已上架10个软件系统、3个大屏模板&#xff08;还不…

JAVA自动化之Junit单元测试框架详解

一、JUnit概述&配置 1、Junit是什么&#xff1f; Junit是一个Java 编程语言的开源测试框架&#xff0c;用于编写和运行测试。官网 地址&#xff1a;https://junit.org/junit4/ 2、Maven配置 ?xml version"1.0" encoding"UTF-8"?> <project…

一文搞懂模板(template)

背景引入&#xff1a; 想象一下&#xff0c;我们要实现一个整数相加&#xff0c;浮点数相加的函数&#xff0c;如果按C语言的思路&#xff0c;我们需要写两个函数名不同的函数&#xff0c;来完成相加&#xff1b;如果C语言&#xff0c;则可以通过函数重载的特性&#xff0c;写两…

LC1305. 两棵二叉搜索树中的所有元素(JAVA)

两棵二叉搜索树中的所有元素 题目描述中序遍历 归并排序 题目描述 难度 - 中等 LC1305. 两棵二叉搜索树中的所有元素 给你 root1 和 root2 这两棵二叉搜索树。请你返回一个列表&#xff0c;其中包含 两棵树 中的所有整数并按 升序 排序。. 示例1&#xff1a; 输入&#xff1a;…

燃气安全如何保障?万宾燃气管网监测系统时刻感知管网运行态势

近年来随着我国城镇化建设的加快&#xff0c;燃气已经成为每个家庭的必需品。然而&#xff0c;每年夏季频繁发生的燃气爆炸事故&#xff0c;已经严重危害人民生命财产安全危害社会公共安全和公共利益。为了保障燃气安全运行&#xff0c;近日&#xff0c;许多城市都在大力推进燃…

Redis代码实践总结(二)

使用 CLI 探索 Redis 外部程序使用 TCP 套接字和 Redis 特定协议与 Redis 进行通信。该协议在不同编程语言的 Redis 客户端库中实现。然而&#xff0c;为了使使用 Redis 进行黑客攻击变得更简单&#xff0c;Redis 提供了一个命令行实用程序&#xff0c;可用于向 Redis 发送命令…

Docker配置镜像加速器

1.登录阿里云 阿里云-计算&#xff0c;为了无法计算的价值 (aliyun.com) 2.容器 说明&#xff1a;找到产品下的容器 3.容器镜像服务ACR 4.点击控制台 5. 点击镜像加速器 6.操作文档

项目开发过程中,成员提离职,怎么办?

之前写过一篇《如何应对核心员工提离职》反响特别好&#xff0c;今天做个延展篇&#xff0c;在项目过程中&#xff0c;员工突然提离职&#xff0c;我们有什么办法让项目按时按质的上线。 项目做多了&#xff0c;总会碰到这种情况。这里给大家介绍一个解决项目问题的分析方法&a…