Javascript 当我不使用';我不想这样

Javascript 当我不使用';我不想这样,javascript,javascript-objects,Javascript,Javascript Objects,我有一些用其他几种语言编写代码的经验,但我对Javascript非常陌生。 我试图首先生成一个连续整数数组,然后使用一个单独的函数对数组的内容求和。我能够生成数组没有问题,但是当我尝试对内容求和时,数组的元素会莫名其妙地转换为字符串。我搞不清楚为什么会发生这种事 感谢您的任何帮助或建议。谢谢 // Takes a starting and ending number, and returns an array of every step between. function range(star

我有一些用其他几种语言编写代码的经验,但我对Javascript非常陌生。 我试图首先生成一个连续整数数组,然后使用一个单独的函数对数组的内容求和。我能够生成数组没有问题,但是当我尝试对内容求和时,数组的元素会莫名其妙地转换为字符串。我搞不清楚为什么会发生这种事

感谢您的任何帮助或建议。谢谢

// Takes a starting and ending number, and returns an array of every step between.

function range(start, end, step = 1) {
    let iterator = start;
    let array = new Array();
    while(iterator <= end) {
        array.push(iterator);
        iterator += step;
    }
    return array;
}

// Takes an array and calculates the sum of the contents.

function sum(...inputs) {
    let total = 0;
    if(inputs[0] instanceof Array) {     // Test whether the input array is single or multi dimensional
        for(input in inputs[0]) {
            console.log(typeof(input));             // Evaluates to String?????? <<<<<<<<<<<<<<<
            console.log(inputs[0] instanceof Array); // Evaluates to true
            console.log(typeof inputs[0][0]);       // Evaluates to Number

            total += input;
        }
    }
    else {
        for(input in inputs) {
            total += input; // I want this to add numbers together, but it concatenates strings instead.
        }
    }

    return total;        // I want this to return a number, but it returns a string.
}

console.log(sum(range(1,10)));  // Returns string literal "00123456789"
//获取开始和结束的数字,并返回之间每一步的数组。
功能范围(开始、结束、步骤=1){
让迭代器=开始;
让数组=新数组();
while(迭代器)
这将循环对象的属性名,对于数组,这些属性名是字符串
“0”
“1”
,等等

使用
循环遍历值(即您放入数组中的数字)

这将循环对象的属性名,对于数组,这些属性名是字符串
“0”
“1”
,等等


使用
of
循环遍历值(即您输入数组中的数字)。

因此我做了一些挖掘,问题似乎来自for-in-loop的使用。因此,对于in-iterate-over键而不是值,如果我们要迭代值,可以使用for-of循环,如下所示:

功能范围(开始、结束、步骤=1){
让迭代器=开始;
让数组=新数组();

虽然(迭代器所以我做了一些挖掘,问题似乎来自for-in-loop的使用。因此,对于in-iterate-over-key而不是值,如果我们想迭代值,我们可以使用for-of-loop,如下所示:

功能范围(开始、结束、步骤=1){
让迭代器=开始;
让数组=新数组();

while(迭代器提示:您可以对这样的数组求和:
array.reduce((a,b)=>a+b)
谢谢!这真的很酷。提示:您可以对这样的数组求和:
array.reduce((a,b)=>a+b)
谢谢!真是太酷了。太谢谢你了。这让我发疯了。还有,你闪电般的快。任何时候我的朋友。祝你下一步好运。太谢谢你了。这让我发疯了。还有,你闪电般的快。任何时候我的朋友。祝你下一步好运(y)谢谢!我不敢相信我这么快就得到了所有的帮助。你们这些人太棒了!谢谢!我不敢相信我这么快就得到了所有的帮助。你们太棒了!
for(input in inputs[0]) {