1.2.3.18.了解閉包(二)
應用閉包的實際案例
執行程式
行 1 ~ 12: 全域執行環境 (global Execution context)被建立, 並存放buildFunctions(),fs
行 13: 建立新的執行環境, 待函數執行完後回傳 i =3, arr = [f0, f1, f2]
行7不會被執行
buildFunctions 的執行環境離開執行堆, 但執行環境的記憶體還會在, 因此i, arr還在
行16 ~ 20被執行, 這時候因為函數中沒有i, arr的定義, 根據範圍鍊的觀念會開始向外尋找, 此時還是找的到i, arr, 因為i, arr位於外部的記憶體位置
如何正常印出i?
解法1:
加入行4: 因為變數j會在迴圈中, 在記憶體中建立一個新的
Last updated
Was this helpful?