javascript的闭包的形成


  //例子1  
        var a = 10086;
        function f1() {
            alert(a);
        }
        f1(); //999

    //例子2:函数内部变量声明的时候,必须要用var  否则实际是声明了一个全局变量 
        function f2() {
            var b = 10086;
        }
        f2();
        alert(b); //errer :b为定义 
      
        //例子3:例如c为全局变量 
        function f3() {
            c = 10086;
        }
        f3();
        alert(c);//

        //==========================
        //例子2情况 我们需要访问b的值的时候怎么办呢
        //这个时候f4内的所有变量对于getd都是可见的,但getd中的变量对f4却不可见 ,这样我们的f4函数就形成了闭包了。
       //例子4 
        function f4() {
            var d = 10000;
            function getd() { 
                alert(d);
            }
            return getd();
        }
        
//        闭包的定义:简单的可以理解为定义在函数内部的函数
//        闭包的用途:读取函数内部的变量,让变量的值保持在内存中
 //例子5
        function f5() {
            var n = 100086;
            Add = function () { n += 1 };
            function getn() {
                alert(n);
            }
            return getn;
        }

       //这样调用的时候不会出现闭包的情况  
        f5();//这里输出10086
        Add();
        f5();//10086

        //用fun变量,形成闭包
        var fun = f5();//使用fun指向getn
        fun();
        Add();
        fun();
        //当执行 var fun=f5() 时,变量fun实际指向了函数getn,getn中用到了变量n
        //当函数f5内部的函数getn被函数a外部变量引用的时候,就创建了一个闭包 
        //闭包的作用:在a执行完后并返回,闭包由于变量n被外部引用,导致资源不会被回收,所以n始终存在,如果我们返回的不是getn,那么n的值不会被调用,就会被回收
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值