闭包的好处罗列
好处:
1.希望一个变量长期驻扎在内存当中
2.避免全局变量的污染
3.私有成员的存在
用法:
1.模块化代码
2.在循环中直接找到对应元素的索引
模块化代码
var aaa = (function(){
var a = 1;
function bbb(){ a++; alert(a); } function ccc(){ a++; alert(a); } return { b : bbb, c : ccc } })(); aaa.b(); //2 aaa.c(); //3 alert(a); //报错找不到a,因为这里的a已经私有化了,避免了全局污染
希望一个变量长期驻扎在内存当中
function aaa(){ var a = 1; //程序结束后,这个a的内存不会被释放 return function(){ a++; alert(a); } } var b = aaa(); //或者不这样赋值调用,而是直接aaa()()这样用 b(); //2 b(); //3 alert(a);//报错找不到a,因为这里的a已经私有化了,避免了全局污染
被污染的a
var a = 1; function aaa(){ a++; alert(a); } aaa(); //2 aaa(); //3 alert(a);//能够被调用,此时的a为全局
在循环中直接找到对应元素的索引
var aLi = document.getElementsByTagName('li'); for(var i=0;i<aLi.length;i++){ (function(i){ aLi[i].onclick = function(){ alert(i); }; })(i); } //当然还可以这样指定索引值来完成 for(var i=0;i<aLi.length;i++){ aLi[i].index=i; aLi[i].onclick =function(){ alert(this.index) } }
在IE下引发内存泄露的处理方法
window.onload = function(){
var oDiv = document.getElementById('div1');
oDiv.onclick = function(){
alert(oDiv.id);
};
window.onunload = function(){ //在最后释放掉内存
oDiv.onclick = null;
};
};
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
· Manus爆火,是硬核还是营销?