闭包的两大作用:保存/保护
闭包的概念
函数执行时形成的私有上下文EC(FN),正常情况下,代码执行完会出栈后释放;但是特殊情况下,如果当前私有上下文中的某个东西被上下文以外的事物占用了,则上下文不会出栈释 放, 从而形成不销毁的上下文。 函数执行函数执行过程中,会形成一个全新的私有上下文, 可能会被释放,可能不会被释放,不论释放与否,他的作用是:
(1)保护:划分一个独立的代码执行区域,在这个区域中有自己私有变量存储的空间,保护 自己的私有变量不受外界干扰(操作自己的私有变量和外界没有关系);
(2)保存:如果当前上下文不被释放【只要上下文中的某个东西被外部占用即可】,则存储 的这些私有变量也不会被释放,可以供其下级上下文中调取使用,相当于把一些值保存起 来 了;
我们把函数执行形成私有上下文,来保护和保存私有变量机制称为闭包
。
稍全面的回答:
在js中变量的作用域属于函数作用域, 在函数执行完后,作用域就会被清理,内存也会随之被回 收,但是由于闭包函数是建立在函数内部的子函数, 由于其可访问上级作用域,即使上级函数执行完, 作用域也不会随之销毁, 这时的子函数(也就是闭包),便拥有了访问上级作用域中变量的权限,即使上级函数执行完后作用域内的值也不会被销毁。
闭包的特性:
1、内部函数可以访问定义他们外部函数的参数和变量。(作用域链的向上查找,把外围的作用 域中的变量值存储在内存中而不是在函数调用完毕后销毁)设计私有的方法和变量,避免全局变量的污染。
(1).闭包是密闭的容器,,类似于set、map容器,存储数据的
(2).闭包是一个对象,存放数据的格式为 key-value 形式
2、函数嵌套函数
3、本质是将函数内部和外部连接起来。优点是可以读取函数内部的变量,让这些变量的值始终保存在内存中,不会在函数被调用之后自动清除
闭包的用途:
- 模仿块级作用域
- 保护外部函数的变量 能够访问函数定义时所在的词法作用域(阻止其被回收)
- 封装私有化变量
- 创建模块
闭包应用场景
闭包的两个场景,闭包的两大作用:保存/保护
。 在开发中, 其实我们随处可见闭包的身影, 大 部分前端JavaScript 代码都是“事件驱动”的,即一个事件绑定的回调方法; 发送ajax请求成功或失败的回调;setTimeout的延时回调;或者一个函数内部返回另一个匿名函数,这些都是闭包的应用.
闭包的优点:延长局部变量的生命周期
闭包缺点:会导致函数的变量一直保存在内存中,过多的闭包可能会导致内存泄漏
闭包的两大作用:保存/保护相关推荐
- zuul两大作用_SpringCloud微服务(05):Zuul组件,实现路由网关控制
一.Zuul组件简介 1.基础概念 Zuul 网关主要提供动态路由,监控,弹性,安全管控等功能.在分布式的微服务系统中,系统被拆为了多个微服务模块,通过zuul网关对用户的请求进行路由,转发到具体的后 ...
- 子网掩码的作用是什么 两大作用详解
子网掩码的作用是什么?掩码用于说明子网域在一个IP地址中的位置.子网掩码主要用于说明如何进行子网的划分.掩码是由32位组成的,很像IP地址.对于三类IP地址来说,有一些自然的或缺省的固定掩码.下面详细 ...
- zuul两大作用_springCloud学习- 路由网关(zuul)
1.zuul简介 1.1.zuul是什么 zuul 是netflix开源的一个API Gateway 服务器, 本质上是一个web servlet应用. Zuul 在云平台上提供动态路由,监控,弹性, ...
- 鸿蒙合香丸吃了好吗,合香丸的功效与副作用有哪些 盘点合香丸的两大作用和两大禁忌...
很多人都有口臭的问题,不仅仅是存在口腔疾病,还有可能是胃肠道出现的情况,简单的掩盖口臭可能会让病情变得越来越严重,应该要重视内在的调理方法,很多朋友可能都会选择使用合香丸,但是合香丸的功效与副作用有哪 ...
- 深度学习中 Embedding层两大作用的个人理解
https://blog.csdn.net/weixin_42078618/article/details/82999906
- python闭包到底有什么作用
本文转载于https://blog.csdn.net/qq_27825451/article/details/79964128,并对代码格式做了修正. 1.global关键字的作用 如果在函数中需要修 ...
- Graphviz:利用可视化工具Graphviz将dot数据进行图像可视化或者图像保存(两大方法)之详细攻略
Graphviz:利用可视化工具Graphviz将dot数据进行图像可视化或者图像保存(两大方法)之详细攻略 目录 graph_feature函数:为给定的特征生成特征谱系图
- 计算机软件总体上分为,计算机软件分为哪两大类?它们各自的作用是什么?
计算机软件总体分为系统软件和应用软件两大类: 1.系统软件是负责管理计算机系统中各种独立的硬件,使得它们可以协调工作.系统软件使得计算机使用者和其他软件将计算机当作一个整体而不需要顾及到底层每个硬件是 ...
- 台式机塔式服务器的作用,塔式服务器的两大核心优势,你都知道吗?
塔式服务器与PC电脑的外形几乎相近,这就使得它成为企业首要考虑的服务器.那塔式服务器究竟有哪些优势呢?下面小编来给大家简单介绍一下塔式服务器的两大核心优势! 1.塔式服务器噪音低散热好 塔式服务器外观 ...
最新文章
- 美国对六种新兴技术实施控制:EUV和5nm相关技术在列
- HDOJ 1071 The area (纯数学题)
- 《x86汇编语言:从实模式到保护模式》视频来了
- SpringMVC拦截器-拦截器的作用
- matlab实现一/多元线性回归
- bootstrap基础学习【菜单、按钮、导航】(四)
- java模拟病人就诊过程_new 患者在医院看病过程:先排队等候 联合开发网 - pudn.com...
- 总结一下目标检测与跟踪
- 《SQL必知必会》附录
- 学会Apache网页与安全的优化,让你的技术更加胜人一筹!(网页压缩与缓存、隐藏版本信息与配置防盗链)
- Android免费离线文字转语言+讯飞语记
- 灰度图转热力图_热力图下看区域城市密集度,密集度较高的主要在沿海和省会周边...
- 蓝桥杯 摔手机----耐摔指数
- 小程序云开发支持公众号网页开发了
- 大数据主要学些什么?(大数据学习路线图)
- sql中向下取整怎么取_Sql Server 里的向上取整、向下取整、四舍五入取整的实例! | 学步园...
- 关于手写笔记、电子笔记、摘录的思考
- JAVA计算机毕业设计跨境电商网站(附源码、数据库)
- android 颜色值16进制转换int类型;
- Java Stream流式编程