2017-03-01 102 views
1


我有一個問題裏面,我不知道爲什麼,如果我叫tab[4]()或任何其他數量< 0,9>的結果在控制檯始終是10 我猜測結果爲ii的console.log(I)的功能

var tab = []; 
for (var i = 0; i < 10; i++) { 
    tab[i] = function(){ 
     console.log(i) 
    } 
} 
+1

這是'i'。運行該功能時''''是'10'。你有一個for循環,每次你循環時增加它,直到它到達10,循環停止。 – Quentin

+0

閱讀http://stackoverflow.com/questions/38944850/for-variable-within-getjson-displayed-wrong/38944865#38944865 –

+0

對此的一個很好的解釋可以在這裏找到:https://medium.freecodecamp.com/ 3-問題對手錶進行換IN-A-JavaScript的採訪,725012834ccb#c5f5。最簡單的解決方案是用'let i = 0'替換'var i = 0'。 – str

回答

0

var tab = []; 
 
for (var i = 0; i < 10; i++) { 
 
    let a = i; 
 
    tab[i] = function(){ 
 
     console.log(a); 
 
    } 
 
} 
 
    
 
tab[1](); 
 
tab[2]();

+1

關於downvote的一些反饋? – piotrbienias

1

嘗試以下

var tab = []; 
 
for (var i = 0; i < 10; i++) { 
 
    tab[i] = (function(i) { 
 
    return function() { 
 
     console.log(i) 
 
    } 
 
    })(i); 
 
}