Javascript 数组元素之和返回NaN

Javascript 数组元素之和返回NaN,javascript,Javascript,我有以下代码 var Arr = [-1,3,-4,5,1,-6,2,1]; function solution ( A ) { var sum; var len = A.length; for ( var key in A ) { sum += +(parseInt(A[key])); } return sum; } solution( Arr ); 然后它返回NaN。有人能帮我吗 谢谢 您从不初始化sum,因此它会启动未定义的 未定义的+number=NaN

我有以下代码

var Arr = [-1,3,-4,5,1,-6,2,1];

function solution ( A ) {
  var sum;
  var len = A.length;
  for ( var key in A ) {
    sum += +(parseInt(A[key]));
  }
  return sum;
}

solution( Arr );
然后它返回NaN。有人能帮我吗


谢谢

您从不初始化
sum
,因此它会启动
未定义的

未定义的
+number=
NaN

未定义的
+“任何数字”总是
NaN

声明起始值为
0
sum
。(aka:初始化它)

此外,在以下情况下使用基数也是一个好主意:


这确保
parseInt
始终尝试将
A[键]
解释为十进制数。

以下是代码的工作版本

function solution ( A ) {
  var sum = 0;
  var len = A.length;
  for ( key in A ) {
    sum += parseInt(A[key], 10);
  }
  return sum;
}

你应该初始化
sum
而且你的
+(parseInt(一个[key])
parseInt(一个[key])具有相同的效果

使用基数10表示parseInt这很奇怪,我在第一次尝试时就没用了。所以初始化是个问题。除了将
sum
初始化为0之外,您还可以删除
parseInt
,假设数组元素始终是数字。另外,在访问数组元素时,避免使用
中的
,以防
数组。prototype
已扩展。在这种情况下,最好使用
for
循环。
parseInt(A[key], 10)
function solution ( A ) {
  var sum = 0;
  var len = A.length;
  for ( key in A ) {
    sum += parseInt(A[key], 10);
  }
  return sum;
}