您的位置:首页 > Web前端 > JavaScript

一个例子让你体验javascript闭包

2015-07-05 15:27 507 查看
以下内容太过暴力,请成年人在未成年人的陪同下观看!!!转载一定要注明本文出处:啊哒木木

闭包的定义一般有两种:1认为闭包是符合一定条件的函数;2认为闭包是函数及其相关环境组合而成的实体,,即创建一个能显式表示引用环境的东西,并将它与相关的子程序捆绑在一起,这样捆绑起来的整体称为闭包。个人倾向于第二种定义。

示例代码:

      var a=20000;
      function b(num){
         var a=num;
         var x=100;
        function c(){
                console.log(a++);
             }
        return c; 
                }
      g =b(5);
      g();               //5
      g();                //6
      g =b(5);
      g();//5
      g =b(12);
      g();              //12
      d =b(5);
      g();              //13
      d();            //5
      console.log(a);               //20000


我们看代码,第11行和第12行的输出我们可以看出,形成闭包后,再往b函数内传形参已经不好使了。

第10行、第13行和第15行,我们可以看出,重新声明g,之前的闭包销毁,建立新的闭包。

第16、17、18行,我们可以看出,建立了两个闭包,互不影响。

第20行,告诉我们,只有通过闭包才能访问到函数的内部变量,直接访问不到,除非闭包提供一个return,类似于接口
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: