佩服老師的口才
你的理解是錯(cuò)的,這個(gè)跟閉包沒(méi)關(guān)系,閉包只是能訪問(wèn)外部函數(shù)的變量i而已。
首先要理解該問(wèn)題要明白js是從上至下執(zhí)行的;
在代碼從上至下執(zhí)行到for循環(huán)的時(shí)候執(zhí)行了3次,每次i加一,但是循環(huán)體內(nèi)只是把數(shù)組callbacks[i]賦值了一個(gè)函數(shù)(function),但是該函數(shù)并沒(méi)有執(zhí)行,此時(shí)如果出入callbacks[i]得到的都是function的字符串;所以此時(shí)并沒(méi)有執(zhí)行function里面的console.log輸出i的值。
在代碼的最后一句console.table()中寫(xiě)的是:callbacks[0](),這句代碼的意思就是執(zhí)行了callbacks[0]指向的function,這時(shí)候才會(huì)執(zhí)行function的內(nèi)容而不是返回字符串;
2019-08-24
貼上我寫(xiě)的代碼,const定義了callbacks數(shù)組的引用不可變,因此跟var是一樣的不影響結(jié)果