javascript变量返回NaN

时间:2015-08-06 22:51:04

标签: javascript nan

我有以下功能,并不太明白为什么newOutput会返回NaN。我将newOutput作为初始值传递0。

第一个console.log返回" 0"

第二个console.log将arrayFinal(在我的脚本中早先构建的)中的值作为字符串返回(所有数字都没有空格 - 例如1,21,322,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;
};

编辑以纠正问题

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;
    }
};

3 个答案:

答案 0 :(得分:3)

你错过了一组花括号。

而不是:

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

你有

 for(i = 0; i < arrayFinal.length; i++);
 // more code

第一个for行实际上是一个空循环。它将递增i直到它等于arrayFinal.length,然后在该循​​环完成后执行其余代码。

然后,当您访问arrayFinal[i]时,您正在查看一个超过数组末尾的内容。 javascript返回undefined

,而不是崩溃(就像某些语言在这种情况下一样)

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

答案 1 :(得分:0)

newOutput = arrayFinal[i] + newOutput;时,变量i将具有值arrayFinal.lengtharrayFinal[arrayFinal.length]将返回undefined,这将导致{{1} }}。你可能想写:

NaN

或类似的东西

答案 2 :(得分:-2)

每个参数的输入在哪里? 你有没有打过电话?