一道经典的JS关于闭包的题

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

    (function() {

        setTimeout(function() {

            console.log(i);

        }, i * 1000);

    })(i);

}

问输出什么?

我其实是想问的
是不是可以拆一下,拆成

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

function ret(i){

function timer(){

console.log(i);

}

setTimeot(timer,i*1000);

}

ret(i);

}

原题自己跑过了,输出的是5个5
是不是可以理解为:因为根本没有i传入到块级作用域里面去,所以里面跑的还是外面跑完之后的i?
不知道上面的理解的对不对,求大佬指点一下,看了一晚上闭包,看的要死啦....
求大佬推荐IIFE方面的文章,看了好几篇都感觉理解不了闭包和IIFE。

Smart猫小萌
浏览 489回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript