javascript 变量返回 NaN
javascript variable returning NaN
我有下面的函数,不太明白为什么newOutput returns NaN。我将 0 传递给 newOutput 作为初始值。
第console.log returns "0"
第二个 console.log returns arrayFinal 的值(在我的脚本之前构建)作为字符串(所有数字都没有空格——例如 1,21,322,14,18.3) .
第三个console.logreturn未定义。
最后一个 console.log returns 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;
}
};
您缺少一组花括号。
而不是:
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 returns undefined
.
而不是崩溃(就像某些语言在这种情况下所做的那样)
然后undefined
加上一个数字returnsNaN
.
每个参数的输入在哪里?
你调用函数了吗?
在 newOutput = arrayFinal[i] + newOutput;
时变量 i
将具有值 arrayFinal.length
和 arrayFinal[arrayFinal.length]
returns undefined
,添加到任何这导致 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;
}
或类似的东西
我有下面的函数,不太明白为什么newOutput returns NaN。我将 0 传递给 newOutput 作为初始值。
第console.log returns "0"
第二个 console.log returns arrayFinal 的值(在我的脚本之前构建)作为字符串(所有数字都没有空格——例如 1,21,322,14,18.3) .
第三个console.logreturn未定义。
最后一个 console.log returns 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;
}
};
您缺少一组花括号。
而不是:
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 returns undefined
.
然后undefined
加上一个数字returnsNaN
.
每个参数的输入在哪里? 你调用函数了吗?
在 newOutput = arrayFinal[i] + newOutput;
时变量 i
将具有值 arrayFinal.length
和 arrayFinal[arrayFinal.length]
returns undefined
,添加到任何这导致 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;
}
或类似的东西