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

why I'm getting Not-A-Number instead of a Value returned by my function

本文关键字:函数 返回 Value Not-A-Number 为什么      更新时间:2023-10-03

我正在尝试进行一些简单的计算,但我的函数仍然返回NaN(Not-a-Number)
根据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

有一些错误,所以我将逐步进行。

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

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

您声明了var j,然后将i用于<和++比较,然后再次从i中得到索引。还有一个对+=方法的反转。此外,result2一次又一次地超出范围,因此即使将其固定为+=也无济于事,因为result2不存在于for循环之外。您需要在for循环之外声明它,以便在计算finfin时它仍然存在。

应为:

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

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

可能,您有一个拼写错误:

var result2 += arr[i];

此外,您应该在for语句之外定义result2

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