我想通過做一些練習來刷新我的JavaScript。返回值沒有傳遞給其他函數
我寫了一個range
函數,該函數接受兩個參數start和end,並返回一個數組,其中包含從開始到(包括)結束的所有數字。
然後我寫了一個sum
函數,該函數接受一組數字並返回這些數字的總和。
問題是當我從range
返回一個值並傳遞給第27行sum
(或console.log(sum(range(1, 10)));
)。不過,我得到零作爲返回值。我通過傳遞數組test
來檢查我的sum
函數,它按預期工作。我忽略了什麼?
function range(start, end, step){
if(step === undefined){ step = 1; }
var arr = [];
for(var i = start; i >= end; i += step){
arr.push(i);
}
return arr;
}
function sum(nums){
var total = 0;
for(var i = 0; i < nums.length; i++){
total += nums[i];
}
return total;
}
var test = [1, 3, 5];
console.log(sum(test));
// → returns 9
console.log(range(5, 2, -1));
// → returns [5, 4, 3, 2]
console.log(sum(range(1, 10)));
// → should return 55, but returns 0
普羅布茲想'typeof step ==='undefined''。 – Fuser97381
當你做console.log時,你會得到什麼(range(1,10));這比縮小你寫的那個更有幫助。即。如果返回[1,2,3,4,5,6,7,8,9,10],那麼問題就是sum()。否則,問題在範圍()中。 –
'範圍(1,10)'返回0 @DanB。 – Scimonster