闭包

闭包1

每次执行ff()的时候实际上执行的是f1内部的函数

闭包2

闭包3

function f1(){

    for(var i = 0; i < 10; i++) {

        setTimeout(function() {

            console.log(i);

        }, 1000)

    }

}

f1();

打印出1010

对于闭包3如果要想改造一下输出0到9,以下两种是可行的

 

1.内部改造成立即执行函数

function f1(){

 

    for(var i = 0; i < 10; i++) {

 

        (function(num){setTimeout(function() {

 

            console.log(num);

 

        }, 1000)})(i);

 

    }

 

}

 

f1();

 

打印出09

2.对于for里面的var改成let,闭包本身是那个变量占用内存不释放的,如果用块级作用域可以解决

 

posted on 2019-06-11 10:40  yemiaomiao  阅读(116)  评论(0编辑  收藏  举报

导航