国强极客
有问题请加微信:guoqiang7585
国强极客

javascript闭包及应用

javascript闭包及应用

五、闭包

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

5.2、闭包应用

每隔1秒,依次输出12345;

    //循环所用的时间,可以忽略不计。
   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);
    }
赞赏
对内容有疑问,请加我微信:guoqiang7585

国强极客

文章作者

博客站长,有问题请加微信【guoqiang7585】。

国强极客

javascript闭包及应用
五、闭包 JS有两链一包的说法,两链是作用域链和原型链,一包就是闭包。 观察上述代码,调用a函数之后,会在内存中形参红色的区域;另外将a的返回值赋值给了bb,后续垃圾回收机制并不知道…
扫描二维码继续阅读
2019-12-08