为什么我得到Not-A-Number而不是我的函数返回的值

时间:2015-02-12 19:28:04

标签: javascript

我尝试做一些简单的计算,但我的功能仍然返回NaN(非数字)。
根据MDN NaN表示不是数字,所以我尝试转换为Number()的数字,但仍然返回相同的内容,这里是代码:

function capPow() {
  var arr = [];
  for (var i = 1 ; i <= 100 ; i++) {
    var result = Math.pow(i, 2);
        arr.push(result);
  }

  for (var j = 0 ; i < arr.length ; i++) {
    var result2 =+ arr[i];
  }
  var finfin = Math.pow(result2, 2);
  var ending = finfin - result2;

  return Number(ending);
}

console.log(capPow());

结果:

NaN

2 个答案:

答案 0 :(得分:4)

有一些错误,所以我会一步一步地去。

这个for循环是头痛的根源。

for (var j = 0 ; i < arr.length ; i++) {
    var result2 =+ arr[i];
}

您声明了var j,然后将i用于&lt;和++比较,然后再次从i获取索引。还有+ =方法的逆转。另外,result2反复超出范围,因此即使将其修复为+ =也无济于事,因为for循环之外不存在result2。你需要在for循环之外声明它,以便它在你计算finfin时保持存在。

应该是:

var result2 = 0;
for (var j = 0 ; j < arr.length ; j++) {
    result2 += arr[j];
}

如有疑问,记录所有内容。在console.log(result2)之前var finfin会向您显示result2未定义整个时间,而console.log(j)将显示您根本没有输入循环。

答案 1 :(得分:0)

可能你有一个错字:

var result2 += arr[i];

另外,您应该在result2声明

之外定义for

你也有几个错误。这是更新jsfiddle和修复:http://jsfiddle.net/rm3cpk5e/