我想知道什麼是錯這個函數採用陣列和總結它的元素這個javascript函數有什麼問題?
var arr = [1,2,3,4,5,6,7,8,9,10];
var sum = 0;
var arraySum = function() {
for (var i = 0 ; i<= arr.length ; i++) {
sum += arr[i];
}
console.log(sum);
};
arraySum(arr);
我想知道什麼是錯這個函數採用陣列和總結它的元素這個javascript函數有什麼問題?
var arr = [1,2,3,4,5,6,7,8,9,10];
var sum = 0;
var arraySum = function() {
for (var i = 0 ; i<= arr.length ; i++) {
sum += arr[i];
}
console.log(sum);
};
arraySum(arr);
您正試圖將陣列的外部訪問的元素,這將返回undefined
。
for (var i = 0 ; i<= arr.length ; i++) {
// ^the equal sign
與
for (var i = 0 ; i< arr.length ; i++) {
var arr = [1,2,3,4,5,6,7,8,9,10];
var sum = 0;
var arraySum = function() {
for (var i = 0; i< arr.length; i++) {
sum += arr[i];
}
};
arraySum(arr);
document.write(sum);
的問題是有你的for循環的條件下更換。使用<
當你檢查對長度,
for (var i = 0 ; i < arr.length ; i++) {
//------------------^ replaced the <= with <
你的循環將另外一個迭代時間,當時的價值將是undefined
。因爲sum + undefined = NaN
。
如果您想確定使用<=
,那麼從長度中減去1並使用它。
for (var i = 0 ; i <= arr.length-1 ; i++) {
//------------------------------^ decrement the length by 1
或者你可以用Array.prototype.reduce
var arr = [1,2,3,4,5,6,7,8,9,10];
var sum = arr.reduce((a, b) => { return a + b }, 0);
做整個過程中,你也可以使用Array.prototype.forEach
功能
var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
var sum = 0;
arr.forEach(function(element) {
sum += element;
});
console.log(sum);
問題是與條件。你可以使用'
Tushar
你傳遞了一個參數,但該函數沒有任何參數?另外,你應該在函數內移動'sum'聲明(特別是初始化!)。 – Bergi