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