如果没有任何参数,我的平均函数返回nan。我怎样才能让它返回0呢?

时间:2018-05-01 23:31:33

标签: javascript ecmascript-6

使用rest参数,如果我的函数没有任何参数,如何让最后一个控制台日志显示为0。前三个控制台日志很好并按预期返回,但最后一个控制台日志返回NaN

function average(...numbers) {
let avg = 0;
for(let num of numbers) {
    avg += num;
    }
avg = avg / numbers.length;
return avg;
}

console.log(average(2, 6));
console.log(average(2, 3, 3, 5, 7, 10));
console.log(average(7, 1432, 12, 13, 100));
console.log(average());

2 个答案:

答案 0 :(得分:2)

根据定义,零数字的平均值是未定义的,因此完全可以预期NaN

但是如果你坚持在这种情况下获得0,你将需要特殊情况,例如if (numbers.length == 0) return 0;

答案 1 :(得分:0)

如果您不想明确编写特殊情况,可以使用逻辑AND &&运算符的短路功能:

function average(...values) {
  const { length } = values
  let avg = 0

  for (const value of values) {
    avg += value
  }

  return length && avg / length
}

console.log(average(2, 6))
console.log(average(2, 3, 3, 5, 7, 10))
console.log(average(7, 1432, 12, 13, 100))
console.log(average())