簡體   English   中英

為什么使用“ else if”語句會出現NaN錯誤?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM