搬开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。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 86.复合 Cases 共享相同代码块的多个switch 分支 分支可以合并, 写在分支后用逗号分开。如果任何模式...
    无沣阅读 5,303评论 1 5
  • 闭包是自包含的函数代码块,可以在代码中被传递和使用。Swift 中的闭包与 C 和 Objective-C 中的代...
    莽原奔马668阅读 5,858评论 2 12
  • 闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现。 一、变量...
    zock阅读 4,692评论 2 6
  • 此刻,已经是2016年中秋节的凌晨,今晚的夜,一直很明亮,天空中的云朵美丽可现,透过树叶看见的它,仿佛就轻...
    爱吃草的兔阅读 2,383评论 0 0
  • 很久以前,流传着一个传说,传说在深林的尽头,有一条七彩湖,湖里养着一朵七彩玫瑰,玫瑰娇艳欲滴,散发着诱人的香味,传...
    尹小莫阅读 3,813评论 7 5