return 的函数,为什么被执行了?

如下代码:
for(vari=0,l=5;isetTimeout((function(j){
returnfunction(){
console.log(j)
}
})(i),500)
}
按理说500毫秒以后,函数只是被return了,但是实际是console被执行了,请问是为什么?
MM们
浏览 429回答 2
2回答

慕容森

因为setTimeout就是在指定延时之后执行第一个参数,也就是传入的函数。你以为setTimeout执行的是:(function(j){returnfunction(){console.log(j)}})(i)但其实这一串是一个IIFE,当解释器读到这些代码的时候就已经把它执行了,然后返回了:function(){console.log(j)}所以,500ms过后,setTimeout实际执行的正是被返回之后的这个函数体。

HUWWW

函数是只是被return了,然后作为第一个参数传给了setTimeout,这不就是setTimeout的用法么?
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript