学习并深入理解闭包

news2024/11/28 14:17:11

前言

学习闭包前,先学点别的。

程序执行时:
1.编译阶段
创建变量对象GO,包括变量和函数作用域装在一块内存中。但是没有赋值,变量都是undefined,函数:0xxx

2.创建执行上下文
里面有VO对应ao(函数里的变量,没执行,undefined,执行,被赋值)

3.代码执行
函数里的变量赋值
多加一句:
作用域和执行上下文之间最大的区别是: 执行上下文在运行时确定,随时可能改变;作用域在定义时就确定,并且不会改变。

那么闭包是怎么能访问到已经执行完的变量呢???
function a(){
var aa=123
function b(){
var bb=234
console.log(aa)
}
return b
}
var test = a()
test()
在这里插入图片描述
在这里插入图片描述a执行就是b定义,所以a执行的时候,就有b用a的的变量的作用域,a执行的时候,b看到的和a是一样的。所以垃圾回收机制并不会回收。

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

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

相关文章

数据结构 -- 跳跃链表

跳跃链表的概念 跳跃链表是有序链表的一个变种,在一个有序链表中,查找一个链表中的元素需要进行一次遍历,时间复杂度为O(n),为了加快查找的过程,能够跳过某些元素呢?一个思路就是牺牲一定的空间换时间&…

入职外包一个月,我离职了

有一种打工人的羡慕,叫做“大厂”。 真是年少不知大厂香,错把青春插稻秧。 但是,在深圳有一群比大厂员工更庞大的群体,他们顶着大厂的“名”,做着大厂的工作,还可以享受大厂的伙食,却没有大厂…

Redis系列第一篇:ubuntu18.04下源码编译安装Redis 6.2.12

Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。 Redis是一个key-value存储系统。和Memcached类似&#xff…

EasyExcel设置动态head数据(不是格式)及postman自测的坑

需求背景: 导出某某业务模块的数据,但是,数据列的标题内容是根据当前日期计算出来的。 比如今天是5月20,那么列就是 5/21 、 5/22…以此类推 问题: EasyExcel 通过Bean的注解实现匹配的,这是最便捷的方式&…

这5款小众又好用的软件,你都知道吗?

1.文件比较——WinMerge WinMerge是一款用于比较和合并文件和文件夹的工具。它可以让你对不同的文件和文件夹进行可视化的对比,并显示出差异和相似之处。WinMerge支持多种功能,如合并,同步,过滤,插件等。这款工具非常实用,但是可以提供强大的文件比较功能,是管理文件和解决冲突…

123 2021年国赛 二分搜索+前缀和

题目描述 小蓝发现了一个有趣的数列,这个数列的前几项如下: 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 小蓝发现,这个数列前 1 项是整数 1,接下来 2 项是整数 1 至 2,接下来 3 项是整数 1 至 3,接下来 4 项是整数…

day2 ARM处理器概论

目录 RISC处理器和CISC处理器 SOC(System on Chip) ARM指令集概述 指令集 ARM指令集 编译原理 ARM存储模型 ARM指令存储 ARM工作模式 工作模式的理解 ARM工作模式分类 RISC处理器和CISC处理器 RISC处理器 只保留常用的的简单指令,硬件结构简单,复…

你觉得你很优秀,为什么连一个软件测试面试都过不了?

目录 前言 简历请用数字化结果不要只是堆研工作经历 简历一:我的工作内容有 简历二:我的工作内容有: 当你和HR面对面坐下来时,迎接我们的第一个问题往往是:“来,请简单介绍下你自己吧。 了解你的过去是判断你未来的最好方式 增加好印象&#xff0c…

基于SVM的鸢尾花数据集回归分析

目录 1. 作者介绍2. SVM支持向量机算法2.1 鸢尾花数据集2.2 鸢尾花数据集可视化2.2.1 散点图2.2.2 箱型图2.2.3 三维散点图(3D) 3. SVM算法实现3.1 完整代码3.2 运行结果3.3 问题与分析 1. 作者介绍 张佳伦,男,西安工程大学电子信…

androidstudio ffmpeg 音频转换

java-ffmpeg-音频转换 需求描述功能流程所需条件步骤步骤1步骤2步骤3一些我使用中遇到的异常 需求描述 项目中的语音唤醒后的语音识别人声检测一直是一个很令我头痛的问题,之前因为对各种类型的工具包使用不熟练,以及时间问题,一直没有根治这个人声检测体验不好的问题,之前的解…

不同品牌或型号的单片机

以下是一些常见的单片机品牌和型号: 微控制器(Microchip):PIC系列(如PIC16F877A、PIC18F4550) 瑞萨电子(Renesas):RX系列(如RX231、RX65N)需要资…

Termius 最好用的SSH 连接工具

Termius 最好用的SSH 连接工具 一、环境准备二、配置2.1 terminus 安装2.2 删除自动更新2.3 修改用户信息 三、使用四、页面展示 该工具 mac os 可直接使用 本文只展示 windows 使用步骤,本教程使用的 termius 版本为 7.59.6 一、环境准备 termius 下载 官网下载地址…

ubuntu上安装docker报错

执行docker命令的时候报错如下: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running? 为了解决这个问题,看了一些帖子有的说重启docker.service服务或者看该服务是否已经正常启动,结果网上…

超实用!新手项目经理掏心窝总结的经验

像项目这样复杂的环境中,往往会出现错误判断、沟通不畅、管理不善以及最常见的错误。因此,项目管理需要项目经理有广泛的经验、洞察力和技能,无论是规划、组织还是有效领导团队,以在规定的时间和预算内实现项目目标。在这种情况下…

基于BAT指令定时备份Oracle并发送邮件

前言 在企业级应用程序中,数据是非常重要的资源。因此,我们需要定期备份数据以确保其安全性和完整性。在Oracle数据库中,我们可以使用多种方法来备份数据,其中一种方法是使用BAT脚本来进行自动化备份。 在本文中,我们…

【AI实时变声器,声音甜甜的小姐姐背后竟是抠脚大汉】

前言 这是一款基于AI算法的实时变声器,如果你不懂AI也没事,直接使用我提供的一键安装包 链接:https://pan.baidu.com/s/1f3X6JdBVOgeTNPf0B3CRKg 提取码:k5v2 变声器安装使用 有两款变声器,都是基于RVC做的&#xf…

ctfshow——web入门 SSRF

web351web352web353web354web355web356web357web358web359web360 web351 通过hackbar post提交 urlhttp://127.0.0.1/flag.php 获得flag web352 将127.0.0.1和localhost给过滤了,但并不影响post提交 post urlhttp://127.0.0.1/flag.php web353 过滤了localhost和1…

python基础学习1

pyhton数据分析的优势: ①语法简单精炼 ②有很强大的库 ③功能强大 ④适用于构建生产系统 ⑤胶水语言 python数据分析常用的类库: ①IPython------科学计算标准工具集的组成部分 ②NumPy------python科学计算的基础包 ③SciPy--------解…

【手撕Spring源码】深度理解SpringBoot

文章目录 Tomcat内嵌容器Tomcat 基本结构创建Tomcat内嵌容器内嵌Tomcat集成Spring 容器 Boot 自动配置什么是自动配置类自动配置类原理Aop自动配置DataSource自动配置MyBatis自动配置事务自动配置MVC自动配置条件装配 附:注解小总EnableConfigurationPropertiesCond…

RWKV配上ChatGPTBox让我们在浏览器中感受AI带来的魅力

这次我们来讲讲RWKV搭配ChatGPTBox结合使用带来的功能体验,这两个项目都是同一个大神创建的,完全可以无缝搭配进行使用。 以下是我之前在本地部署了AI模型RWKV的教程,如果还没有本地部署过AI的童鞋可以查看我之前发布的教程,在自…