匿名函数和闭包

//普通函数
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;
 }
}
相关文章
相关标签/搜索