定义
闭包是指有权访问另一个函数作用域中的变量的函数。
理解
函数定义和函数表达式位于另一个函数的函数体内。而且,这些内部函数可以访问它们所在的外部函数中声明的所有局部变量、参数和声明的其他内部函数。当其中一个这样的内部函数在包含它们的外部函数之外被调用时,就会形成闭包。
示例
求一组array的和
普通写法
var arr = [1,2,3,4,5,6,7,8,9];
var reduce = arr.reduce(function (x,y) {
return x+y;
});
console.log(reduce);
改写成闭包
function sum(arr) {
var sum1 = function () {
return arr.reduce(function (x, y) {
return x+y;
})
};
return sum1;
}
//sum([1,2,3,4,5,6,7,8,9]);
var message =sum([1,2,3,4,5,6,7,8,9]);
console.log(message());