[英]Why am I getting a NaN error using an “else if” statement?
我是一個絕對的初學者,所以我為菜鳥的問題事先表示歉意,但是確實如此。 我不明白為什么我在網上課程中收到此代碼的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());
為星期日添加條件將解決此問題。
else if(day === 'Sunday') { return 8;}
這是中斷的地方: + getSleepHours('Sunday');
因為Sunday
你沒有條件。
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());
正如Federico klez Culloca提到的那樣,要求'Sunday'
返回'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'));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.