• 闭包


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

    闭包是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变量。

  • 相关阅读:
    NYOJ-开灯问题
    cocos2dx 3.0 飞机大战
    Java 实现享元(Flyweight)模式
    MongoDB 操作手冊CRUD查询指针
    均值滤波
    cxf调用c#的webservice
    SharePoint 2013 术语和术语集介绍
    Unity3d 网络编程(二)(Unity3d内建网络各项參数介绍)
    linux服务器在运行210天左右宕机
    好的用户界面-界面设计的一些技巧
  • 原文地址:https://www.cnblogs.com/zhuxianguo/p/7159552.html
Copyright © 2020-2023  润新知