关于闭包我想说的

闭包是保护并重用局部变量的机制
为什么用: 全局变量: 优: 随处可用,可重用,缺: 易被污染
局部变量: 优: 仅在函数内用,安全,缺: 不可重用
何时使用: 希望重用一个变量,又不希望被污染时-保护局部变量
如何定义: 3步:
1. 定义受保护的局部变量
2. 定义内层函数专门操作受保护的变量
3. 定义外层函数将受保护的变量和操作变量的函数封装起来,外层函数将内层函数返回到外部

 

<script>

function fun(){
for(var i=0,arr=[];i<3;i++){
//函数定义时不执行函数体
arr[i]=function(){return i};
}//i=3
return arr;
}
var funs=fun();
//funs:[
// function(){return i},
// function(){return i},
// function(){return i}
//]
console.log(funs[0]());//3
console.log(funs[1]());//3
console.log(funs[2]());//3

function f(){
var n=999;
/*window.*/nAdd=function(){n++};
return function(){return n;}
//n=999
}
var get=f();
//f共抛出了几个内层函数:
//get: function(){return n;}
//nAdd: function(){n++}
console.log(get());//999
nAdd();
console.log(get());//1000

</script>

posted @ 2016-08-10 20:09  tracy_zzc  阅读(166)  评论(0编辑  收藏  举报