搬开Javascript三座大山(1):闭包

闭包的解释(又长又臭):

闭包就是嵌套在函数里面的内部函数,并且该内部函数可以访问外部函数中声明的所有局部变量、参数和其他内部函数。当该内部函数在外部函数之外被调用,就生成了闭包。

其实用代码解释,就是这样:

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。

你可能感兴趣的:(搬开Javascript三座大山(1):闭包)