亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么 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 關注
  • 186 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號