一.概念
闭包是指在函数声明时的作用域以外的地方调用函数
二.使用场景
1.函数作为返回值
function fn() {
var max = 10;
return function bar(x) {
if(x > max) {
console.log(x);
}
}
}
var f1 = fn();
f1(15);// 15 bar函数作为返回值,赋值给f1变量。执行f1(15)时,用到了fn作用域下的max变量的值。
2.函数作为参数被传递
var max = 10,
fn = function(x){
if(x > max) {
console.log(x);
}
}
(function(f){
var max = 100;
f(15); // fn函数作为一个参数被传递进入另一个函数,赋值给f参数。执行f(15)时,max变量的取值是10,而不是100。
})(fn)
三.闭包的缺点
闭包占内存,需要定期销毁,直接赋值为null