我有一個問題裏面,我不知道爲什麼,如果我叫tab[4]()
或任何其他數量< 0,9>的結果在控制檯始終是10 我猜測結果爲i
將i
的console.log(I)的功能
var tab = [];
for (var i = 0; i < 10; i++) {
tab[i] = function(){
console.log(i)
}
}
我有一個問題裏面,我不知道爲什麼,如果我叫tab[4]()
或任何其他數量< 0,9>的結果在控制檯始終是10 我猜測結果爲i
將i
的console.log(I)的功能
var tab = [];
for (var i = 0; i < 10; i++) {
tab[i] = function(){
console.log(i)
}
}
var tab = [];
for (var i = 0; i < 10; i++) {
let a = i;
tab[i] = function(){
console.log(a);
}
}
tab[1]();
tab[2]();
關於downvote的一些反饋? – piotrbienias
嘗試以下
var tab = [];
for (var i = 0; i < 10; i++) {
tab[i] = (function(i) {
return function() {
console.log(i)
}
})(i);
}
這是'i'。運行該功能時''''是'10'。你有一個for循環,每次你循環時增加它,直到它到達10,循環停止。 – Quentin
閱讀http://stackoverflow.com/questions/38944850/for-variable-within-getjson-displayed-wrong/38944865#38944865 –
對此的一個很好的解釋可以在這裏找到:https://medium.freecodecamp.com/ 3-問題對手錶進行換IN-A-JavaScript的採訪,725012834ccb#c5f5。最簡單的解決方案是用'let i = 0'替換'var i = 0'。 – str