You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让使用剩余参数的平均值函数无参数时返回0而非NaN?

解决平均值函数无参数返回NaN的问题

嗨,我来帮你搞定这个问题~咱们先揪出问题根源:当你调用average()不传任何参数时,剩余参数numbers会变成一个空数组,这时候numbers.length是0,执行avg / 0就会得到NaN(毕竟0不能当除数嘛)。要解决这个问题,只需要在函数里加个判断,处理空数组的情况就行啦。

修改方案一:提前判断空数组

这是最直观的方式,先检查有没有传入参数,要是没有直接返回0:

function average(...numbers) { 
  // 空数组直接返回0
  if (numbers.length === 0) {
    return 0;
  }
  let sum = 0; 
  for(let num of numbers) { 
    sum += num; 
  } 
  return sum / numbers.length; 
}

修改方案二:简化的三元表达式

如果想让代码更紧凑,可以用三元表达式在返回时处理:

function average(...numbers) { 
  let sum = 0; 
  for(let num of numbers) { 
    sum += num; 
  } 
  // 数组有长度就计算平均值,否则返回0
  return numbers.length ? sum / numbers.length : 0; 
}

进阶方案:用reduce简化求和

要是想让代码更简洁,还可以用数组的reduce方法来求和:

function average(...numbers) {
  if (numbers.length === 0) return 0;
  const sum = numbers.reduce((total, current) => total + current, 0);
  return sum / numbers.length;
}

现在你再调用average()就会返回0啦,其他有参数的调用也完全不受影响,输出结果和之前一样符合预期。

内容的提问来源于stack exchange,提问作者7vnKge

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:10:50