为什么使用“ else if”语句会出现NaN错误?

时间:2019-06-17 13:47:15

标签: javascript

我是一个绝对的初学者,所以我为菜鸟的问题事先表示歉意,但是确实如此。我不明白为什么我正在参加的在线课程中的此代码出现NaN错误:

我可以使用switch来做到这一点,但我想了解为什么使用else if时会出错。

const getSleepHours = day => {
  if (day === 'Monday') {
    return 8;
  } else if (day === 'Tuesday') {
    return 8;
  } else if (day === 'Wednesday') {
    return 8;
  } else if (day === 'Thursday') {
    return 8;
  } else if (day === 'Friday') {
    return 8;
  } else if (day === 'Saturday') {
    return 8;
  }
}


const getActualSleepHours = () => getSleepHours('Monday') + getSleepHours('Tuesday') + getSleepHours('Wednesday') + getSleepHours('Thursday') + getSleepHours('Friday') + getSleepHours('Saturday') + getSleepHours('Sunday');

console.log(getSleepHours('Tuesday'));
console.log(getActualSleepHours());

3 个答案:

答案 0 :(得分:1)

为星期日添加条件将解决此问题。

else if(day === 'Sunday') { return 8;}

在这里中断:+ getSleepHours('Sunday');

答案 1 :(得分:0)

因为您没有Sunday的if条件。

const getSleepHours = day =>{
  if(day === 'Monday'){
    return 8; 
  } 
  else if(day === 'Tuesday'){
    return 8; 
  }
  else if(day === 'Wednesday'){
    return 8; 
  }
  else if(day === 'Thursday'){
    return 8; 
  }
  else if(day === 'Friday'){
    return 8; 
  }
  else if(day === 'Saturday'){
    return 8; 
  } else if (day === 'Sunday') {
    return 8;
  }

}


const getActualSleepHours = () => getSleepHours('Monday') + getSleepHours('Tuesday') + getSleepHours('Wednesday') + getSleepHours('Thursday') + getSleepHours('Friday') + getSleepHours('Saturday') + getSleepHours('Sunday');

console.log (getSleepHours('Tuesday'));
console.log (getActualSleepHours());

答案 2 :(得分:0)

正如Federico klez Culloca所述,要求'Sunday'返回undefined,因为没有条件。

  

使用undefined进行计算将始终返回NaN,因为undefined不是数字


您的解决方案可能是添加“星期日”条件或添加else语句。

  

我认为您应该同时添加它们,以确保如果字符串错误,函数也不会再次中断。看下面的例子:

const getSleepHours = day =>{
  if(day === 'Monday') return 8;
  else if(day === 'Tuesday') return 8;
  else if(day === 'Wednesday') return 8;
  else if(day === 'Thursday') return 8;
  else if(day === 'Friday') return 8;
  else if(day === 'Saturday') return 8;
  else if(day === 'Sunday') return 8;
  else return 0;
}


const getActualSleepHours = () => getSleepHours('Monday') + getSleepHours('Tuesday') + getSleepHours('Wednesday') + getSleepHours('Thursday') + getSleepHours('Friday') + getSleepHours('Saturday') + getSleepHours('Sunday');

console.log ('Tuesday:', getSleepHours('Tuesday'));
console.log ('getActualSleepHours:', getActualSleepHours());

console.log ('Sundax instead of Sunday: ', getSleepHours('Sundax'));