闭包
-
定义
闭包就是能够读取其他函数内部变量的函数; *闭包是指有权访问另一个函数作用域中变量的函数。创建一个闭包的最常 见的方法就是在一个函数内部创建另一个函数,通过另一个函数访问这个 函数的局部变量,利用可以突破作用域链*。
-
闭包的特性
- 函数内部嵌套函数 - 内部函数可以引用外部函数的参数和变量 - 参数和变量不会被垃圾回收机制收回
-
闭包的优缺点
- [ ] ##优点:可以创建私有的变量和方法,避免全局变量的污染 - [ ] ## 缺点:不正当的使用会消耗内存,导致内存的泄露
eg:以下内容借鉴廖雪峰老师官网内容廖雪峰老师官网
- 高阶函数:(把函数作为参数传入,这样的函数称为高阶函数);高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回。
function sum(arr) { return arr.reduce(function (x, y) { return x + y; }); } sum([1, 2, 3, 4, 5]); // 15
如果上面的函数不是立刻就和,而是返回就和的函数
function lay_sum(arr){
var sum = function(){
return arr.reduce(function (x, y) {
return x + y;
});
}
return sum;
}
var fn = lay_sum([1,2,3,4,5]);
console.log(fn);
//ƒ () {
// return arr.reduce(function (x, y) {
// return x + y;
//});
// }
fn();//15