js闭包

闭包例子
var color = "blue"; 
 function changeColor(){    
     var anotherColor = "red"; 
     function swapColors(){        
         var tempColor = anotherColor;        
         anotherColor = color;        
         color = tempColor;
         //在 swapColors函数里面可以访问tempColor,anotherColor和color         
     }
     //在这里可以访问anotherColor和color,但不能访问tempColor
     swapColors();
 } 

 

function f1(){
     var n=999; //私有变量
 
     //在函数f1内定义另外的函数作为f1的方法函数
     function f2(){
         alert(n); //引用外层函数f1的临时变量n
     }
     return f2; //返回内部函数
 }
 //调用函数
 var result=f1();
 result(); // 999

function foo() {
     var a = 1;
     function geta() {
         a++;
         return a;
     }
     return geta
 }
 
 myfunc = foo()
 myfunc() // return 2
 myfunc() //return 3


实际应用中会遇到闭包的情况

 <ul>
     <li><a href="#">第0个链接</a></li>
     <li><a href="#">第1个链接</a></li>
     <li><a href="#">第2个链接</a></li>
     <li><a href="#">第3个链接</a></li>
 </ul>   
 
 var as = document.getElementsByTagName("a");
 for(var i=0;i<as.length;i++){
     as[i].onclick = function(){
         alert("你现在单击的是第" + i + "个链接");
     }
 }

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。