我有以下功能,并不太明白为什么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;
}
};
答案 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.length
而arrayFinal[arrayFinal.length]
将返回undefined
,这将导致{{1} }}。你可能想写:
NaN
或类似的东西
答案 2 :(得分:-2)
每个参数的输入在哪里? 你有没有打过电话?