要成为高级 JavaScript 程序员,就必须理解闭包。闭包有时你非用她不可, 所有理解闭包还是必要的。笔者通过例子来说一下“闭包”
1.定义一个函数的代理:

function delegate (fn, scope, args, append) {
        return function /*匿名函数1*/ () {
            var callargs = Array.proptotype.slice(arguments, 0);
            if (append)
                callargs  = callargs .concat(args);
            fn.apply(scope || window, callargs );
        }
    }

在上面这段代码中就用到了闭包,即delegate方法里return 后面的函数(匿名函数1)就是闭包, 这个例子是个方法fn创建一个代理, 意思就是在执行方法fn的时候给他添加一些额外的参数或者改变fn执行的作用域,比如:

function test_delegate() {
       var fn = delegate(test, window, ["11122", "aaaa"], true); //给方法test 创建一个代理, 并传人参数["11122", "aaaa"]
       fn("111"); //调用test的代理
}
function test() { //输出test的所有参数
     var arr =[];
     Easy.each(arguments, function (item) {
         arr.push(item);
     });
      alert(arr.join("\n"));

其中的test_delegate里调用的 fn("111"); 参数"111", 就是在delegate方法里的匿名函数1的arguments 在这个例子里test执行后会输出:

111

11122
aaaa

delegate方法出自Easy.js。下面粘贴一个ECMA 262 里对闭包的介绍
ECMA 262 Closure(英文)

为之漫笔 翻译的ECMA 262 Closure

转载于:https://www.cnblogs.com/Easyjs/archive/2011/02/27/1966218.html

Easyjs 细说Javascript里的 闭包(Closure)相关推荐

  1. javascript中的闭包closure详解

    文章目录 简介 函数中的函数 Closure闭包 使用闭包实现private方法 闭包的Scope Chain 闭包常见的问题 闭包性能的问题 总结 简介 闭包closure是javascript中一 ...

  2. [译]Javascript中的闭包(closures)

    本文翻译youtube上的up主kudvenkat的javascript tutorial播放单 源地址在此: https://www.youtube.com/watch?v=PMsVM7rjupU& ...

  3. [转载]深入理解JavaScript闭包(closure)

    最近在网上查阅了不少Javascript闭包(closure)相关的资料,写的大多是非常的学术和专业.对于初学者来说别说理解闭包了,就连文字叙述都很难看懂.撰写此文的目的就是用最通俗的文字揭开Java ...

  4. 深入理解JavaScript闭包(closure) 【收藏】

    深入理解JavaScript闭包(closure) 原文地址:http://www.felixwoo.com/archives/247  Felix Woo 最近在网上查阅了不少Javascript闭 ...

  5. 【转】深入理解JavaScript闭包(closure)

    文章来源:http://www.felixwoo.com/archives/247 最近在网上查阅了不少Javascript闭包(closure)相关的资料,写的大多是非常的学术和专业.对于初学者来说 ...

  6. 深入理解JavaScript系列:闭包(Closures)

    介绍 本章我们将介绍在JavaScript里大家经常来讨论的话题 -- 闭包(closure).闭包其实大家都已经谈烂了.尽管如此,这里还是要试着从理论角度来讨论下闭包,看看ECMAScript中的闭 ...

  7. 细说javaScript入门学习

    文章目录 Javascript笔记 1.js基本语法 (1).变量 (2).数据类型 (3).运算符 (4).其他语句 (5).输出 (6).获取属型 (7).定时函数 2.函数 3.对象 (1).创 ...

  8. JavaScript基础系列---闭包及其应用

    闭包(closure)是JavaScript中一个"神秘"的概念,许多人都对它难以理解,我也一直处于似懂非懂的状态,前几天深入了解了一下执行环境以及作用域链,可戳查看详情,而闭包与 ...

  9. JavaScript 小记 之 闭包(Closures)

    Closures are functions that refer to independent (free) variables. 闭包是以静态方式/词法方式进行存储所有父作用域的一个函数 在Jav ...

最新文章

  1. 设计模式:模板方法(Template Method Pattern)
  2. Linux-进程内存占用情况
  3. VS2010设置全局Include和Lib目录
  4. KlayGE 4.0中Deferred Rendering的改进(四):GI的神话
  5. 【转】盛大创新院许式伟:影响我一生的五个重要选择
  6. python怎么接收udp报文_面试官:说说UDP和TCP的区别及应用场景
  7. 【Github】nlp-journey: NLP相关代码、书目、论文、博文、算法、项目资源链接
  8. javascript 模板
  9. 自定义TxT文档下载
  10. 亚马逊云科技 2022 年 3 月新服务新功能强势来袭
  11. transformer中的多头注意力机制
  12. 关于“学习金字塔理论”的所思所想
  13. 使用POI在Excel单元格插入符号(Symbol)
  14. APS系统在注塑行业的应用
  15. CALayer和Retina显示屏的高分辨率的支持
  16. J2EE进阶之自定义标签,JSTL标签,国际化 十四
  17. HTML超链接QQ在线聊天
  18. QQ空间g_tk、bkn加密参数算法
  19. TP框架中S函数使用方法
  20. 【JS 逆向百例】医保局 SM2+SM4 国产加密算法实战

热门文章

  1. 数据结构 - 链表(双向链表学习)
  2. 【Python CheckiO 题解】Even the Last
  3. linux禁止u盘自动运行,求设置U盘自动运行和禁止运行的方法。
  4. 用生动的例子花式解释:python类中一定需要有 __init__方法么?没有会怎样?
  5. 【HDU - 6574】Rng(概率,古典概型)
  6. 【牛客 - 370F】Rinne Loves Edges(树,统计dp)
  7. 【CodeForces - 371D】Vessels(思维,元素合并,并查集)
  8. 【HDU - 5744 】Keep On Movin (回文串性质,贪心思维,不是水题)
  9. 10.深度学习练习:Convolutional Neural Networks: Step by Step(强烈推荐)
  10. linux联想电脑wifi密码,联想笔记本Y7000—ubuntu16.4无法开启wifi的解决办法