闭包:指的是词法表示包括不被计算的变量的函数,也就是说,函数可以使用函数之外定义的变量。
闭包小实例
/**
* 闭包 在函数中可以访问定义在该函数之外的变量
* 可以防止变量被篡改
* @returns {Function}
*/
function myFun(){
var msg="msg in myFun";
return function(){
return msg;
}
}
var msg='msg in window';
d((myFun())()); //msg in myFun
//1利用闭包累加求和
function myFun2(n){
var total=;
var i=;
return function(){
total+=i++;
if(i<=n){
arguments.callee();
}
return total;
}
}
d((myFun2())()); //55
//2利用闭包模拟id自增
function autoId(){
var i=;
return function() {
return i++;
}
}
var fn=autoId();
d(fn()); //1
d(fn()); //2
d(fn()); //3
d(fn()); //4
d(fn()); //5
//ps :d=function(i){console.debug(i)}