闭包的学习
1.什么是闭包?
2.闭包有什么好处?应用在那里?
3.闭包需要注意得地方?
这是我学习javascript 闭包的方向:
闭包的定义:函数嵌套函数,内部函数可以引用外部函数的参数和变量,参数和变量不会被垃圾回收机制所收回,什么意思?好抽象哦
function a(){ // 先定义一个函数 var i=1; function b(){ alert(i); // 这里弹出的是1;没错就是1,这里正应证了函数嵌套函数,内部函数可以引用外部函数的参数和变量 } return b(); }a();//执行函数
这里我再说一下js垃圾回收机制
function aaa(){ var a = 1; a++; alert(a);}aaa(); //这里执行的时候弹出的2;
aaa();在执行一次的时候弹出的还是2; 为什么呢,哈哈,这里就涉及js 的垃圾回收机制,var a=1;是局部变量,没有被引用,一旦aaa()执行后会销毁 a变量;在执行时又
重新创建var a=1;所以两次都是弹出的是2;那怎样才不会销毁呢,想一直累加?
var a = 1;//定义一个全局变量function aaa(){ a++; alert(a);}aaa(); // 弹出是2aaa();//弹出的是3
这里的a 没有被销毁,a是一个全局变量,所以一直引用,这就是js的垃圾回收机制,可是我想在内部一直累加行不行呢
可以的。。。。。
function a(){ var a=1; function b(){ a++; alert(a); } return b;}var c=a();c(); //2c(); //3
//为什么会是3呢,这里就涉及js的垃圾回收机制
function b(){ a++; alert(a)} // 这里的a 一直引用着,并没有销毁a 变量,所以才会累加
好处:
1.希望一个变量长期驻扎在内存当中
2.避免全局变量的污染
3.私有成员的存在
用法:
1.模块化代码
2.在循环中直接找到对应元素的索引var a = 1;function aaa(){ a++; alert(a);}aaa(); //2aaa(); //3
function aaa(){ var a = 1; a++; alert(a);}aaa(); //2aaa(); //2 alert(a); ===>a is not defined
function aaa(){ var a = 1; return function(){ a++; alert(a); }}var b = aaa();b(); //2b(); //3alert(a); ===>a is not defined
var aaa = (function(){ var a = 1; return function(){ a++; alert(a); }})();aaa(); //2aaa(); //3
var aaa = function(){ var a = 1; function bbb(){ a++; alert(a); }
function ccc(){ a++; alert(a); } return { b : bbb, c : ccc }}();aaa.b(); //2aaa.c(); //3 alert(a); // 这里访问不到的 ====>a is not definedalert(bbb);// 这里访问不到的 ====>bbb is not definedalert(ccc);//这里是访问不到的 ====>ccc is not defined
function aaa(){ alert(1);}aaa();(function(){ alert(1);})();
这里怎样才点击的到li 的下标呢
for(var i=0;i
- 11111111111
- 11111111111
- 11111111111
如有错误,请留言