1.什么事闭包?
函数嵌套函数,内部函数可以引用外部函数的参数或变量,参数或变量不会被垃圾回收机制所收回,for example:
1 function A() { 2 var a = 1; 3 function B() { 4 alert(a); 5 } 6 return B; 7 } 8 9 var c = A(); 10 c();
2.闭包有什么好处?
1)变量可以常驻内存
2)避免全局变量的污染
3)私有成员的存在,for example
1 var a = (function(){ 2 var i = 0; 3 function func1() { 4 i++; 5 alert(i); 6 } 7 function func2() { 8 i++; 9 alert(i); 10 } 11 return {b:func1, c:func2} 12 })(); 13 14 a.b(); 15 a.c();
3.闭包的用法
1)模块化代码
2)循环中直接找到对应的索引
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title></title> 6 <script> 7 window.onload = function(){ 8 var lis = document.getElementsByTagName(‘li‘); 9 for (var i=0; i<lis.length; i++) { 10 (function(i){ 11 lis[i].onclick = function(){alert(i);} 12 })(i); 13 } 14 } 15 </script> 16 </head> 17 <body> 18 <ul> 19 <li>111</li> 20 <li>111</li> 21 <li>111</li> 22 <li>111</li> 23 </ul> 24 </body> 25 </html>
时间: 2024-10-07 21:41:10