这个 javascript 函数有什么问题?
what is the wrong with this javascript function?
我想知道这个接受数组并对其元素求和的函数有什么问题
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);
您正在尝试访问数组之外的元素,这 returns 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);
我想知道这个接受数组并对其元素求和的函数有什么问题
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);
您正在尝试访问数组之外的元素,这 returns 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);