如下代码:for(vari=0,l=5;i
2 回答
慕容森
TA贡献1853条经验 获得超18个赞
因为setTimeout就是在指定延时之后执行第一个参数,也就是传入的函数。你以为setTimeout执行的是:(function(j){returnfunction(){console.log(j)}})(i)但其实这一串是一个IIFE,当解释器读到这些代码的时候就已经把它执行了,然后返回了:function(){console.log(j)}所以,500ms过后,setTimeout实际执行的正是被返回之后的这个函数体。
添加回答
举报
0/150
提交
取消