下面的那个函数返回NaN而不是预期的4。我敢打赌,这里有一个明显的错误,但我没有看到。
function myFunction(arr) {
let arrSum = 0
for (let i=0; i<=arr.length; i++) {arrSum += arr[i];}
return arrSum;
}
const myArr = [2,2];
console.log(myFunction(myArr));
您需要进行迭代,直到只有i < arr.length
arr [arr.length]会给出未定义,这将使您的arrSum NaN。
function myFunction(arr) {
let arrSum = 0
for (let i=0; i<arr.length; i++) {arrSum += arr[i];}
return arrSum;
}
const myArr = [2,2];
console.log(myFunction(myArr));
问题:for
循环的限制条件超出了数组大小。当前数组大小为2,自i<=arr.length
开始,循环将迭代3次。因此,arr[2]
将是undefined
,并将导致NaN
。
解决方案:要访问数组中的元素,限制条件应为i < arr.length
。
尝试下面的代码。在此处输入代码
function myFunction(arr) {
let arrSum = 0
for (let i=0; i<arr.length; i++) {arrSum += arr[i];}
return arrSum;
}
const myArr = [2, 2];
console.log(myFunction(myArr));