在下面的代碼我感到困惑與註釋的行「在這裏!」:當索引是閉包的一部分時,如何創建索引?
var foo = [];
for(var i = 0; i < 10; i++){
(function(){
var y = i;
foo[i] = function(){return y;} //here!
})();
}
爲什麼「我」價值創造「富」正確的指標?在當我們試着去請教它的價值到底是10.那麼,爲什麼don'tnwe有類似:FOO的
內容:富[10] // 10(有此數組中僅此位置)
我知道我們有一個關於「我」的關閉,因爲我們正在做一個有關另一個範圍的參考,,但是我不明白的是爲什麼「foo」的索引被正確創建並關閉了「我「變量。
你IIFE執行每次迭代後立即,並使用i'的'當前值。只有在IIFE內創建的內部函數需要閉包才能正常工作,因爲這些函數稍後會被調用(儘管顯示的代碼從不會調用它們)。 – nnnnnn