闭包的解释(又长又臭):
闭包就是嵌套在函数里面的内部函数,并且该内部函数可以访问外部函数中声明的所有局部变量、参数和其他内部函数。当该内部函数在外部函数之外被调用,就生成了闭包。
其实用代码解释,就是这样:
function outer(a){
function inner(b){
console.log(a+b);
}
return inner;
}
var six = outer(6);
six(4); // 10
在这里inner()这个函数作为一个outer()的返回值
但还有一种情况,函数作为参数传递:
var a = 1;
f1 = function(b){
console.log(a+b);
}
(function f2(f){
var a = 11;
f(5);
})(f1);
f1函数作为一个参数被传递进入另一个函数,赋值给f参数。执行f(15)时,a变量的取值是1,而不是11。
网友评论