zoukankan      html  css  js  c++  java
  • 闭包

    闭包,百度的解释为“闭包是指可以包含自由(未绑定到特定对象)变量的代码块;这些变量不是在这个代码块内或者任何全局上下文中定义的,而是在定义代码块的环境中定义(局部变量)”。

    闭包是JavaScript学习者的成年礼,没理解闭包就不能说自己学会了JavaScript。闭包在编程中用的比较多,有时候自己在想,为什么需要闭包,闭包又是怎么产生的。

    在JavaScript中函数是一等公民,函数的返回对象可以是简单类型也可以是函数,简单类型对外部依赖最少,但是函数除了定义函数内的变量以及逻辑操作还包含外部环境变量(上下文),为了使返回的函数是一个完整的功能块,势必要求函数所依赖的外部环境也一同提供。返回函数的外部依赖像是必须的配套支持,缺少外部依赖的函数是不完整的,也就无法提供正常的函数功能。由于函数每次运行都要进行一次完整全新的资源分配,因此返回的各闭包函数都拥有自己完整独立的一套外部环境(上下文),对外表象好像是类的不同实例,实例都拥有自己的私有变量。

     var F=function(){
         var i=0;
         return {
             add:function(){
                 i++;
             },
             display:function(){
                 console.log(i);
             }
         }
     }

    测试如下:

     var f1=F();
     f1.add();
     f1.add();
     f1.display();//2
     var f2=F()
     f2.add();
     f2.display();//1

    由此测试可看出f1,f2拥有各自的i变量。

  • 相关阅读:
    【SPOJ 104】Highways
    Test_Codes
    【关路灯】【MM不哭】
    省选悲剧
    【HNOI 2002】营业额统计
    博弈论 Nimm Games
    【NOI 2008】志愿者招募 Employee
    【APIO2009】ATM
    【SDOI 2009】学校食堂 Dining
    POJ 1001
  • 原文地址:https://www.cnblogs.com/zhuxianguo/p/7159552.html
Copyright © 2011-2022 走看看