匿名函數和閉包

//普通函數
function box(){
 return "lee"
}
alert(box());

//匿名函數
function(){
 return 'lee'   //單獨的匿名函數,是不沒法執行的
}

//把匿名函數賦值給變量
var box=function (){
 return "lee"
};
alert(box());

//經過自我執行來執行匿名函數
(function(){
 alert('lee')
})();

//把匿名函數自我執行的返回值賦值給變量
var box=(function(){
 return 'lee';
})()

//自我執行後用alert打印
alert((function(){
 return 'lee';
})())

//自我執行匿名函數的傳參

(function(age){
 alert(age);
})(100);

//函數裏放一個匿名函數
function box(){
 return function(){
  return 'lee';
 }
}
alert(box()());

閉包javascript

//經過閉包返回局部亦是
function box(){
 var age=100;
 return function(){
  return age;
 }
};
alert(box()());

//全局變量實現累加
var age=100;
function box(){
 return age++;
}
alert(box());

//局部變量實現累加
function box(){
 age=100;
 age++;
 return age;
}
alert(box()); //沒有辦法實現累加這種方式,由於每次會被初始化,解決辦法用閉包

//使用匿名函數實現局部變量駐留內存中從而累加
function box(){
 age=100;
 return function(){
  age++;
  return age;
 }
}
var b=box();
alert(b());

b=null;    //解除引用,等待垃圾回收java

//匿名函數的取值問題閉包

//循環裏的匿名函數的取值問題
function box(){
 var arr=[];

 for(var i=0;i<5;i++){
  arr[i]=function(){
   return i;
  }
 }
//循環已經執行完畢了,i最終是4++=5,那麼最終就是5
 return arr;
}

//alert(box()[0]);
var b=box();
for(var i=5;i<5;i++){
 alert(b[i]());
}



改後
function box(){
 var arr=[];
 for(){
  arr[i]=i;
 }
}
相關文章
相關標籤/搜索