为了账号安全,请及时绑定邮箱和手机立即绑定

为什么 NaN 会减少回报?

为什么 NaN 会减少回报?

元芳怎么了 2024-01-18 20:37:36
我故意注释掉了return sum, 因为它没有按预期工作。如果我删除返回总和,它会返回正确的平均值。但这是我不明白的:当它进入最后一个索引位置的if时,这个返回显示NaN。但为什么它返回 NaN 呢?const mediaNumeros = numeros.reduce((sum, element, index, array) => {    sum = sum + element;    if (index == array.length - 1) {        return Number((sum / array.length).toFixed(2));    }    // return sum;}, 0)
查看完整描述

1 回答

?
暮色呼如

TA贡献1853条经验 获得超9个赞

让我们假设 numeros 的值为 [8, 90, 0, 7]

让我们看看每次迭代中发生了什么:-

第一次迭代时: 计算之前sum

  • 数组:[8, 90, 0, 7]

  • 元素:8

  • 索引:0

  • 总和:0

计算后sum

  • 数组:[8, 90, 0, 7]

  • 元素:8

  • 索引:0

  • 总和:8

sum如果我们在第一次迭代后没有返回:

在第二次迭代时: 计算之前sum

  • 和:undefined

  • 数组:[8, 90, 0, 7]

  • 元素:90

  • 指数:1

注意:Array.prototype.reduce() 接受一个函数(即它是高阶函数)而不是一个循环

sum变得未定义,因为我们没有返回前一个函数调用的值。Js 引擎不知道 的值是什么,sum因为前一个函数已经完成并且它的执行上下文被删除。

计算后sum

  • 总和:undefined+ 90 =NaN

  • 数组:[8, 90, 0, 7]

  • 元素:90

  • 指数:1

所以 的值sum就变成了 NaN

sum所以它继续计算NaN的值。


查看完整回答
反对 回复 2024-01-18
  • 1 回答
  • 0 关注
  • 103 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信