如下代碼:for(vari=0,l=5;i
return 的函數(shù),為什么被執(zhí)行了?
陪伴而非守候
2019-04-09 20:25:36
TA貢獻(xiàn)1848條經(jīng)驗 獲得超2個贊
因為setTimeout就是在指定延時之后執(zhí)行第一個參數(shù),也就是傳入的函數(shù)。你以為setTimeout執(zhí)行的是:(function(j){returnfunction(){console.log(j)}})(i)但其實這一串是一個IIFE,當(dāng)解釋器讀到這些代碼的時候就已經(jīng)把它執(zhí)行了,然后返回了:function(){console.log(j)}所以,500ms過后,setTimeout實際執(zhí)行的正是被返回之后的這個函數(shù)體。
TA貢獻(xiàn)1836條經(jīng)驗 獲得超3個贊
函數(shù)是只是被return了,然后作為第一個參數(shù)傳給了setTimeout,這不就是setTimeout的用法么?
舉報