首页 > 解决方案 > 函数返回意外结果

问题描述

我写了一个简单的函数,它是我目前阅读的关于 JS 的书中的练习之一。

function range(start, end) {
    let array = [];

    for(start; start <= end; start++) {
        array.push(start)
    }

    return array;
}

function sum(array) {
    let result = 0;

    for(let i = 0; i <= array.length; i++) {
        result += array[i];
    }

    return result;
}

我使用sum(range(1, 10))and 它是 returnNaN而不是55. 那么为什么它不返回一个数字但是NaN呢?

标签: javascript

解决方案


i <= array.length应该是i < array.length。数组从第零个索引开始,所以最后一个元素将在 index 处array.length - 1

function range(start, end) {
    let array = [];

    for(start; start <= end; start++) {
        array.push(start)
    }

    return array;
}

function sum(array) {
    let result = 0;

    for(let i = 0; i < array.length; i++) {
        result += array[i];
    }

    return result;
}

console.log(sum(range(1, 10)));


推荐阅读