JS高阶---闭包(循环遍历+监听)
2023-09-11 14:19:06 时间
大纲:
主体:
(1)场景1:点击按钮显示点击的第几个
注意:伪数组每次循环时都会重新计算一次长度,所以最好提出去或者直接加到for循环内部
结果:
分析:
1、i为全局变量
解决方案:
1、下标法
2、闭包法
变量分类与读取:
【闭包理解】
(1)首先做下断点测试
(2)自定义验证:
(3)闭包条件验证:
(4)验证方式
通过Chrome调试工具的debug调试工具进行断点测试,进行查看
(5)闭包产生条件
最后必须调用执行函数定义,注意不一定要调用内部函数才会产生闭包,上面断点测试即可看出。验证如下
修改:
【常见的闭包】
(1)将函数作为另外一个函数的返回值
将fn2函数作为fn1函数的返回值
注意:大概格式是这样,但此时还不是闭包,因为没有变量嵌套,也没有调用外部函数。
将代码修改如下
接下来修改如下,会发现a逐增
分析:
①闭包数量
再次创建一个闭包,只需再执行箭头步骤即可
②闭包调用次数
断点测试如下
③第15行虽然是在函数之前调用,但闭包已经产生,因为函数声明提升... ...
(2)将函数作为实参传递给另一个函数
【闭包的作用】
1、在函数外部操作读取内部局部变量
2、延迟局部变量生命周期
【问题】
1、任然存在,因为闭包延长了局部变量的生命周期
2、
【闭包的生命周期】
(1)产生位置
(2)死亡(包含闭包的函数对象成为垃圾对象,此时闭包死亡)
.
相关文章
- JS 逆向 --- 过无限debugge、hook、js混淆还原、控制流混淆
- [转] JS中arr.forEach()如何跳出循环
- h5 录音 自动生成proto Js语句 UglifyJS-- 对你的js做了什么 【原码笔记】-- protobuf.js 与 Long.js 【微信开发】-- 发送模板消息 能编程与会编程 vue2入坑随记(二) -- 自定义动态组件 微信上传图片
- JS实现浏览器html中的“复制”操作(兼容大部分浏览器,亲测没问题)
- 02Vue - Vue.js 入门(条件与循环)
- Vue - 【支持Nuxt.js】超详细网站接入国家 “天地图“ 完整流程,提供显示地图、IP 属地定位 / 用户定位的城市名称、用户定位的经纬度等超多功能(可复制运行示例代码,详细注释及常见问题)
- JS reduce()方法详解,使用reduce数组去重
- js scrollIntoView 滚动到元素可视区域
- js求总页数:总条数,每页条数
- Ext.js数据展示问题name展示code
- 使用JS对form的内容验证失败后阻止提交
- JS教程之Electron.js设计强大的多平台桌面应用程序的好工具
- Vue.js 60分钟快速入门
- 【HarmonyOS】【JS】【布局】鸿蒙js开发input 输入框弹出输入法时上方布局被挤扁?
- java--css+js做的树形菜单(完整版)
- Vue.js 条件与循环
- JavaScript实战代码复制,包含JS这种场景
- JQuery/JS插件 linq.js 入门