返回NaN的javascript变量

返回NaN的javascript变量,javascript,nan,Javascript,Nan,我有下面的函数,但我真的不明白为什么newOutput返回NaN。我将0作为初始值传递给newOutput 第一个console.log返回“0” 第二个console.log以字符串形式返回arrayFinal(在我的脚本前面构建)中的值(所有数值都不带空格,例如1,21322,14,18.3) 第三个console.log返回undefined 最后一个console.log返回NaN,函数的return语句也是如此 失败的原因显而易见,但我的问题是,为什么这个函数既能将arrayFinal

我有下面的函数,但我真的不明白为什么newOutput返回NaN。我将0作为初始值传递给newOutput

第一个console.log返回“0”

第二个console.log以字符串形式返回arrayFinal(在我的脚本前面构建)中的值(所有数值都不带空格,例如1,21322,14,18.3)

第三个console.log返回undefined

最后一个console.log返回NaN,函数的return语句也是如此

失败的原因显而易见,但我的问题是,为什么这个函数既能将arrayFinal转换为字符串,又不能获取arrayFinal[i]的值

function itemSum(newOutput, arrayFinal)
{
    for(i = 0; i < arrayFinal.length; i++);
    console.log(newOutput);
    console.log(arrayFinal.toString());
    newOutput = arrayFinal[i] + newOutput;
    console.log(arrayFinal[i]);
    console.log(newOutput);
    return newOutput;
};
函数itemSum(newOutput,arrayFinal)
{
对于(i=0;i
编辑以更正问题

function itemSum(newOutput, arrayFinal)
{
    for(i = 0; i < arrayFinal.length; i++)
    {
        console.log(newOutput);
        console.log(arrayFinal.toString());
        newOutput = arrayFinal[i] + newOutput;
        console.log(arrayFinal[i]);
        console.log(newOutput);
        return newOutput;
    }
};
函数itemSum(newOutput,arrayFinal)
{
对于(i=0;i
您缺少一组花括号

而不是:

 for(i = 0; i < arrayFinal.length; i++) {
    // inner code
 }
for(i=0;i
你有

 for(i = 0; i < arrayFinal.length; i++);
 // more code
for(i=0;i
的第一行
实际上是一个空循环。它将递增
i
,直到它等于
arrayFinal.length
,然后在循环完成后执行其余代码

然后,当您访问
arrayFinal[i]
时,您正在查看一个数组的末尾。javascript不会崩溃(就像某些语言在这种情况下所做的那样),而是返回
undefined


然后
undefined
加上一个数字返回
NaN

每个参数的输入在哪里?
你调用函数了吗?

newOutput=arrayFinal[i]+newOutput时
变量
i
将具有值
arrayFinal.length
arrayFinal[arrayFinal.length]
返回
未定义的
,并将其添加到
NaN
中的任何结果中。你可能想写:

function itemSum(newOutput, arrayFinal)
{
    console.log(newOutput);
    console.log(arrayFinal.toString());
    for(i = 0; i < arrayFinal.length; i++) {
        newOutput = arrayFinal[i] + newOutput;
        console.log(arrayFinal[i]);
    }
    console.log(newOutput);
    return newOutput;
}
函数itemSum(newOutput,arrayFinal)
{
console.log(newOutput);
log(arrayFinal.toString());
对于(i=0;i

或者类似的东西

数组中的数据是什么?for(i=0;inewOutput=arrayFinal[i]+newOutput时
变量
i
将具有值
arrayFinal.length
,该值返回
undefined
,并添加到任何返回值
NaN
中,该值由用户输入和一点数学运算生成。现在arrayFinal.toString()返回5,8,2,17.nope。那个分号不是故意的。这应该是一个注释。对不起,我对这个网站很陌生。是的。事情就是这样。它并没有像预期的那样工作,但现在它正在做一些有意义的事情——我只需要弄清楚如何告诉计算机我希望它从这里做什么。谢谢