闭包
变量作用域
变量根据作用域的不同分为两种:全局变量和局部变量
1、函数内部可以使用全局变量。
2、函数外部不可以使用局部变量。
3、当函数执行完毕,本作用域内的局部变量会销毁。
什么是闭包
闭包,函数嵌套函数,内层函数可以引用外层函数的参数和变量,参数和变量不会被垃圾回收机制所回收。
闭包的好处:
(1)希望一个变量长期驻扎在内存中;
(2)避免全局变量的污染,私有化成员。
function fn() { var num = 10; function fun() { console.log(num); } fun(); } fn(); // 10
闭包应用-点击li输出当前li的索引号
1 <body> 2 <ul class="nav"> 3 <li>榴莲</li> 4 <li>臭豆腐</li> 5 <li>鲱鱼罐头</li> 6 <li>大猪蹄子</li> 7 </ul> 8 <script> 9 // 闭包应用-点击li输出当前li的索引号 10 // 1. 我们可以利用动态添加属性的方式 11 var lis = document.querySelector('.nav').querySelectorAll('li'); 12 for(var i = 0; i < lis.length; i++) { 13 lis[i].index = i; 14 lis[i].onclick = function() { 15 console.log(this.index); 16 } 17 } 18 // 2. 利用闭包的方式得到小li的索引号 19 for(var i = 0; i < lis.length; i++) { 20 // 利用for循坏创建了4个立即执行函数 21 // 立即执行函数也称为小闭包,因为立即执行函数里面的任何一个函数都可以使用它的i这个变量 22 (function(i) { 23 lis[i].onclick = function() { 24 lis[i].onclick = function() { 25 console.log(this.index); 26 } 27 } 28 })(i); 29 } 30 </script> 31 </body>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!