我是一个绝对的初学者,所以我为菜鸟的问题事先表示歉意,但是确实如此。我不明白为什么我正在参加的在线课程中的此代码出现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());
答案 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'));