3 回答

TA貢獻1872條經驗 獲得超4個贊
您沒有使用var,let或const語句來聲明i,因此它被視為全局變量。
這意味著i您在silnia函數中使用的相同我在for它外部的循環中使用的相同;本質上,它外面的循環運行一次,silniai增加到 6,一旦它返回到for全局范圍內的循環,它就會停止,因為i>koniec.length(ETA:它然后嘗試訪問,sylnia(5)[6]因為i在那個時間點等于 6,這是未定義的)
試試這個:
function silnia(n) {
var wynikSilni = [];
for (var i = 1; i < (n + 1); i++) {
wynikSilni.push(i);
}
return wynikSilni;
}
koniec = [1, 2, 3];
for (var i = 0; i < koniec.length; i++) {
// Returns only undefined:
console.log(silnia(5)[i]);
// Works no problem:
// console.log(silnia(5)[2]);
}

TA貢獻1993條經驗 獲得超6個贊
現在是 2019 年,Arrays 有很多有用的方法可以消除設置和管理循環計數器的需要,正如其他人指出的那樣,這是您問題的根源。
Array.forEach() 是其中最簡單的,將有助于大大簡化您的問題:
koniec = [1,2,3];
// Loop over the knoiec array
// .forEach requires a callback function to execute
// upon each loop iteration. That function will automatically
// be passed 3 arguments: the array item, the item index, the array
koniec.forEach(function(item, index){
console.log(silnia(5)[index]);
});
function silnia(n){
var wynikSilni = [];
for(i = 1; i < (n + 1); i++){
wynikSilni.push(i);
}
return wynikSilni;
}

TA貢獻1850條經驗 獲得超11個贊
您需要聲明變量,否則所有函數都使用全局變量。
function silnia(n) {
var wynikSilni = [];
for (var i = 1; i < (n + 1); i++) { // use var or let
wynikSilni.push(i);
}
return wynikSilni;
}
var koniec = [1, 2, 3];
for (var i = 0; i < koniec.length; i++) { // use var or let
console.log(silnia(5)[i]);
}
添加回答
舉報