码迷,mamicode.com
首页 > Web开发 > 详细

js闭包

时间:2014-11-22 11:52:23      阅读:161      评论:0      收藏:0      [点我收藏+]

标签:io   ar   color   sp   for   on   cti   bs   ef   

闭包例子
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 + "个链接");
     }
 }

js闭包

标签:io   ar   color   sp   for   on   cti   bs   ef   

原文地址:http://www.cnblogs.com/yan940623/p/4114887.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!