function getSum(arr){
var sum = function(){
return arr.reduce(function(x,y){
return x+y;
});
}
return sum;
}
var f = getSum([1,2,3,4,5]);
console.log(f)
f() //15
在这个例子中,我们在函数getSum中又定义了函数sum,并且,内部函数sum可以引用外部函数getSum的参数和局部变量,当getSum返回函数sum时,相关参数和变量都保存在返回的函数中,这种称为“闭包(Closure)
返回闭包时,牢记一点就是:---返回函数不要引用任何循变量,或者后续会发生变化的变量
网友评论