1、变量:局部变量仅在函数内用, 不可重用;全局变量随处可用, 易被污染。
2、概念:保护并重用局部变量的机制
a) 定义受保护的局部变量
b) 定义内层函数专门操作受保护的变量
c) 定义外层函数将受保护的变量和操作变量的函数封装起来,外层函数将内层函数返回到外部
3、何时使用: 重用一个变量,又不希望被污染时-保护局部变量
例:
1.
function f1(){
var i = 30;
function f2(){
i++;
console.log(i);
}
return f2;
}
var rs = f1();//f1返回的是一个函数
rs();//31 -- i=31
rs();//32--之前的值未释放
2.
function fun(){
var arr =[];
for (var i=0; i<3 ; i++){
arr[i]= function(){
return i;
}
}
//console.log(i);i=3
return arr; //返回数组3个元素
}
//console.log(i);undefin
var funs=fun();
console.log(funs); //[function, function, function]
console.log(funs[0]); //function (){ return i;}
console.log(funs[0]()); //3
console.log(funs[1]()); //3
console.log(funs[2]()); //3