一个例子让你体验javascript闭包

本文深入探讨了闭包的概念,包括两种定义方式,并通过示例代码展示了闭包的特性,如外部作用域的访问限制及闭包间的独立性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

闭包的定义一般有两种: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,类似于接口

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值