• js 闭包


    js闭包网站:http://www.cnblogs.com/qieguo/p/5457040.html

    什么是js闭包

     有权访问另一个函数作用域内变量的函数都是闭包。

    这里 f 函数访问了构造函数 a 里面的变量 n,所以形成了一个闭包。再来看一段代码

     1 function a() {
     2     var n = 0;
     3     function f() {
     4         n++;
     5         console.log(n);
     6     }
     7     return f;
     8 }
     9 
    10 var c = a();
    11 c();  //控制台输出1
    12 c();  //控制台输出2

    看看是怎么执行的:

    var c = couter(),这一句 couter()返回的是函数 inc,那这句等同于 var c = f; 

    c(),这一句等同于 f();  注意,函数名只是一个标识(指向函数的指针),而()才是执行函数。

    后面三句翻译过来就是:  var c = f;  f();  f();,跟第一段代码有区别吗? 没有。

    为啥要那样写?

    我们知道,js的每个函数都是一个个小黑屋,它可以获取外界信息,但是外界却无法直接看到里面的内容。将变量 n 放进小黑屋里,除了 f 函数之外,没有其他办法能接触到变量 n,而且在函数 a 外定义同名的变量 n 也是互不影响的,这就是所谓的增强“封装性”。

    而之所以要用 return 返回函数标识 f,是因为在 a 函数外部无法直接调用 f 函数,所以 return f与外部联系起来。

    js闭包的用途

    http://blog.csdn.net/sunlylorn/article/details/6534610

    我们来看看闭包的用途。事实上,通过使用闭包,我们可以做很多事情。比如模拟面向对象的代码风格;更优雅,更简洁的表达出代码;在某些方面提升代码的执行效率。


    1 匿名自执行函数

    2缓存

    3 实现封装

    4 闭包的另一个重要用途是实现面向对象中的对象,传统的对象语言都提供类的模板机制,

  • 相关阅读:
    C 语言实例
    C 语言实例
    C 语言实例
    C 语言实例
    C 语言实例
    C 语言实例
    C 语言实例
    C 语言实例
    YQCB冲刺第二周第二天
    YQCB冲刺第二周第一天
  • 原文地址:https://www.cnblogs.com/spore/p/6159931.html
Copyright © 2020-2023  润新知