//普通函數 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; } }