javascript闭包及应用

2019年12月8日00:53:14 评论 51 次浏览

五、闭包

JS有两链一包的说法,两链是作用域链和原型链,一包就是闭包。
javascript闭包及应用
观察上述代码,调用a函数之后,会在内存中形参红色的区域;另外将a的返回值赋值给了bb,后续垃圾回收机制并不知道bb是否有用,也就是红色内存中的b函数是否有用。所以垃圾回收机制并不会回收红色的区域。
bb ==== b
不知道bb有没有用,也就是不知道b是否有用。所以垃圾回收机制不会清除内存。
这种情形就是闭包,有些时候专门把内部函数b叫做闭包函数
闭包的特点:
闭包会造成内存不被释放;
闭包使得函数外部可以访问内部的变量。

5.2、闭包应用

每隔1秒,依次输出12345;

javascript闭包及应用

    //循环所用的时间,可以忽略不计。
   for(var i=1; i<=5; i++){
        //声明函数
        function a(x){
            setTimeout(function(){
                console.log(x);
            }, 1000*x);
        }
        //调用函数
        a(i);
    }


    //调整后的代码
    for(var i=1; i<=5; i++){
        //声明函数
        (function (x){
            setTimeout(function(){
                console.log(x);
            }, 1000*x);
        })(i);
    }
weinxin
加我微信
微信扫一扫,加我微信好友,共同交流,共同进步! (备注:焦国强博客)
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: