課程
/前端開發(fā)
/JavaScript
/ES6快速入門
為什么是變量提升(把變量的聲明提到所在作用域的最頂端)就使得結(jié)果i*2都是等于6呢?
2019-05-09
源自:ES6快速入門 2-2
正在回答
打印結(jié)果:
當調(diào)用callbacks[0]()時,先執(zhí)行for循環(huán),直到i=3時執(zhí)行結(jié)束后,再向callbacks函數(shù)傳入i,執(zhí)行callbacks[3],循環(huán)三次。
所以這種情況 callbacks[i] ===callbacks[3]
注意:這里的index不是i,而是console.table({})中的數(shù)組下標
Irma_C 提問者
慕圣3317083 回復 Irma_C 提問者
Irma_C 提問者 回復 慕圣3317083
你的理解是錯的,這個跟閉包沒關系,閉包只是能訪問外部函數(shù)的變量i而已。
首先要理解該問題要明白js是從上至下執(zhí)行的;
在代碼從上至下執(zhí)行到for循環(huán)的時候執(zhí)行了3次,每次i加一,但是循環(huán)體內(nèi)只是把數(shù)組callbacks[i]賦值了一個函數(shù)(function),但是該函數(shù)并沒有執(zhí)行,此時如果出入callbacks[i]得到的都是function的字符串;所以此時并沒有執(zhí)行function里面的console.log輸出i的值。
在代碼的最后一句console.table()中寫的是:callbacks[0](),這句代碼的意思就是執(zhí)行了callbacks[0]指向的function,這時候才會執(zhí)行function的內(nèi)容而不是返回字符串;
細雨騎驢入劍門
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Closures可以看下這里講的閉包定義,感覺應該比較好理解了
因為i是全局變量,那當頁面加載的時候,for循環(huán)是已經(jīng)執(zhí)行完成的,此時i的值就是3,那通過循環(huán)建立的callback函數(shù)的執(zhí)行循序是在for循環(huán)之后的,所以function里面的i一直未三
舉報
用最通俗、形象的方法描述ES6的強大并教會你正確的學習方法。
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網(wǎng)安備11010802030151號
購課補貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動學習伙伴
掃描二維碼關注慕課網(wǎng)微信公眾號
2019-05-10
打印結(jié)果:
當調(diào)用callbacks[0]()時,先執(zhí)行for循環(huán),直到i=3時執(zhí)行結(jié)束后,再向callbacks函數(shù)傳入i,執(zhí)行callbacks[3],循環(huán)三次。
所以這種情況 callbacks[i] ===callbacks[3]
注意:這里的index不是i,而是console.table({})中的數(shù)組下標
2019-08-24
你的理解是錯的,這個跟閉包沒關系,閉包只是能訪問外部函數(shù)的變量i而已。
首先要理解該問題要明白js是從上至下執(zhí)行的;
在代碼從上至下執(zhí)行到for循環(huán)的時候執(zhí)行了3次,每次i加一,但是循環(huán)體內(nèi)只是把數(shù)組callbacks[i]賦值了一個函數(shù)(function),但是該函數(shù)并沒有執(zhí)行,此時如果出入callbacks[i]得到的都是function的字符串;所以此時并沒有執(zhí)行function里面的console.log輸出i的值。
在代碼的最后一句console.table()中寫的是:callbacks[0](),這句代碼的意思就是執(zhí)行了callbacks[0]指向的function,這時候才會執(zhí)行function的內(nèi)容而不是返回字符串;
2019-06-05
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Closures可以看下這里講的閉包定義,感覺應該比較好理解了
2019-05-14
因為i是全局變量,那當頁面加載的時候,for循環(huán)是已經(jīng)執(zhí)行完成的,此時i的值就是3,那通過循環(huán)建立的callback函數(shù)的執(zhí)行循序是在for循環(huán)之后的,所以function里面的i一直未三