猿问

立即执行函数为什么能跳过事件队列立即执行

小白问题,求给位赏脸

for (var i = 0; i < 5; i++) {
setTimeout(function() { console.log(i); }, i * 1000 );
}

知道输出5个5 知道这快是事件队列和作用域引起的,但是当使用闭包时结果不同;

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

(function(x) {
    setTimeout(function() { console.log(x); }, x * 1000 );})(i);

}

一次输出0, 1,2,3,4 ;
可是 里面这和立即执行函数的作用是什么?是直接改变了事件队列吗?

求大神,大佬指点~~


慕仙森
浏览 558回答 2
2回答

米琪卡哇伊

5个5是循环中每个迭代在运行时都会给自己捕获一个i&nbsp;后面那段代码则是通过申声明并立即执行函数来创建一个函数来创建作用域的 具体看看我的这篇文章&nbsp;闭包
随时随地看视频慕课网APP

相关分类

Html5
我要回答