您现在的位置是:首页 > 正文

闭包的实现原理和作用,可以列举几个开发中闭包的实际应用

2024-04-01 01:14:02阅读 1

1.闭包的实现原理和作用
闭包:指有权访问另一个函数作用域中的变量的函数,一般都是一个函数包含另一个函数。

2.闭包的作用:
访问函数内部变量、保持函数在环境中一直存在,不会被垃圾回收机制处理。

因为函数内部声明 的变量是局部的,只能在函数内部访问到,但是函数外部的变量是对函数内部可见的,这就是作用域链的特点了。

子级可以向父级查找变量,逐级查找,找到为止

因此我们可以在函数内部再创建一个函数,这样对内部的函数来说,外层函数的变量都是可见的,然后我们就可以访问到他的变量了。

3.闭包的优点
方便调用上下文中声明的局部变量
逻辑紧密,可以在一个函数中再创建个函数,避免了传参的问题
4.闭包的缺点
主要就是使用闭包,可以是函数在执行完不被销毁,保留在内存中,如果大量使用闭包就会造成内存泄露,内存消耗很大

5.闭包在实际中的应用
function addFn(a,b){
return(function(){
console.log(a+"+"+b);
})
}
var test =addFn(a,b);
setTimeout(test,3000);
一般setTimeout的第一个参数是个函数,但是不能传值。如果想传值进去,可以调用一个函数返回一个内部函数的调用,将内部函数的调用传给setTimeout。内部函数执行所需的参数,外部函数传给他,在setTimeout函数中也可以访问到外部函数。

6.常见的内存泄漏
全局变量引起的内存泄露
闭包
没有被清楚的定时器
希望有用
本文章来源于网络,版权归原作者所有,如果地推平台本站文章侵犯了您的权益,请联系我们删除。

网站文章

  • dml中的and使用误区

    下午刚刚在一个jira变更中的遇到问题,非常容易产生误使用,产生比较大的危害。大家看下。非常简单的一条SQL:mysql> update order_original set audit_status=3 and is_queue=1 where id=16682331;Query OK, 0 rows affected (0.00 sec)Rows matched: 1 Chan

    2024-04-01 01:13:56
  • Request通用方式获取请求参数

    Request通用方式获取请求参数

    java

    2024-04-01 01:13:29
  • SpringMVC与Struts2的主要区别

    区别1:Struts2 的核心是基于一个Filter即StrutsPreparedAndExcuteFilter SpringMvc的核心是基于一个Servlet即DispatcherServlet(前端控制器)区别2:Struts2是基于类开发的,传递的参数是通过类的属性传递(属性驱动和模型驱动),所以只能设计成多例prototypeSpringMvc是基于类中的方法开发的,也就是一个url对应

    2024-04-01 01:13:23
  • ffmpeg 音频解码一

    ffmpeg 音频解码一

    前言 前面已经介绍了音频的解码流程,这篇开始就开始视频解码了,同样是两篇,一篇使用parser解析器做解析,一篇按常规流程处理。 一些基础知识 采样率(sample_rate): 即取样频率, 指每秒...

    2024-04-01 01:13:18
  • JNI获取并修改Java中类的变量和静态变量的值

    对于JNI的基本使用请移步:Hello JNI本文主要介绍以下几个函数的使用:GetObjectClassGetFieldID,GetStaticFieldIDGet< Type>Fiel...

    2024-04-01 01:12:52
  • 基于单片机的智能宠物监控设计

    基于单片机的智能宠物监控设计

    在本节中宠物管理系统的硬件电路主要包含:供电电路,微处理器最小系统,存储电路,光敏传感器电路,TTL-UART转USB电路,SWD调试及外扩电路接口,按键电路等。此工程项目的开发过程中,熟悉了工程开发...

    2024-04-01 01:12:44
  • ArcGIS批量导出图片

    ArcGIS批量导出图片

    我们在涉及到大量图斑数据或者底图要素需要出图时,就需要借助ArcGIS中的批量出图功能,这样能够减少很多的人力时间。下面是批量导出图斑数据的步骤。所需数据:a.要素数据(矢量的点线面要素数据)b.影像...

    2024-04-01 01:12:36
  • 拼多多的前端面经

    1.说一下vue router的原理 我说了history和hash的原理onhashchange我都说了 原理层说的 他说不对 我整个前后端路由都解释了 他说不对 他问我怎么实现的不刷新 我不知道。2.js、css加载阻塞问题 如果css加载时间长会阻塞后面的渲染吗3.两种图片引用方式? background-image 和 img的区别? 哪个先加载?4.响应式原理...

    2024-04-01 01:12:05
  • 使用MySQL Shell搭建MGR环境

    使用MySQL Shell搭建MGR环境

    更多文章,欢迎关注作者公众号,欢迎一起交流。1)部署 SandBox 环境[root@serverc local]# mysqlshMySQL Shell 8.0.28-commercialCopyr...

    2024-04-01 01:12:01
  • 2022.07.30 Linux矩阵按键驱动笔记1

    这是之前帮客户开发矩阵键盘驱动时记录的笔记。 1. 行GPIO必须为输入,列GPIO必须为输出。 2. 硬件原理图上的引脚与DTS文件中的引脚必须匹配。 3. X30.dts中要配置行,列对应的键值,...

    2024-04-01 01:11:52