setTimeout匿名函数自执行 这个函数还会放到队列中么?

新手上路,请多包涵

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

  setTimeout(() => { //----1
    console.log(i);
  }, 0)
}

for(var k = 10; k < 15; k++) {
setTimeout(function(k){ //匿名函数自执行 ---2

console.log(k);

}(k), 0)
}

第二个setTimeout中的自执行函数还会放到队列中么,如果是放到队列中,他怎么会先于队列中的//--1 执行呢### 题目描述

题目来源及自己的思路

相关代码

// 请把代码文本粘贴到下方(请勿用图片代替代码)

你期待的结果是什么?实际看到的错误信息又是什么?

阅读 2.1k
1 个回答

你知道什么是函数吗?

这是函数:

function(k){ //匿名函数自执行 ---2
  console.log(k);
}

这是函数调用:

(function(k){ //匿名函数自执行 ---2
 console.log(k);
})(k)

下面这段代码:

setTimeout(function(k){ //匿名函数自执行 ---2
 console.log(k);
}(k), 0)
}

相当于:

function foo(k){
 console.log(k);
}

foo(k);

setTimeout(undefined, 0); // foo 的返回值是 undefined

所以你说说 setTimeout(undefined, 0) 这句代码什么效果? 不存在函数, 更不存在放入任务队列了.

推荐问题