销毁if语句

有什么办法可以使它更短更优雅?

if (
       (start.format('YYYY-MM') === leftCalendar.month.format('YYYY-MM') ||
         start.format('YYYY-MM') === rightCalendar.month.format('YYYY-MM')) &&
       (end.format('YYYY-MM') === leftCalendar.month.format('YYYY-MM') ||
         end.format('YYYY-MM') === rightCalendar.month.format('YYYY-MM'))
   )
     {
       console.log('both dates already visible')
       return;
     }
评论
  • 回家吃饭
    回家吃饭 回复

    使用变量:

    const formattedStart = start.format('YYYY-MM');
    const formattedEnd = end.format('YYYY-MM');
    const formattedLeft = leftCalendar.month.format('YYYY-MM');
    const formattedRight = rightCalendar.month.format('YYYY-MM');
    
    if (
      (formattedStart === formattedLeft || formattedStart === formattedRight) &&
      (formattedEnd === formattedLeft || formattedEnd === formattedRight)
    ) {
      console.log('both dates already visible')
      return;
    }
    

    ...或使用某种功能进一步干燥(可能过大):

    const formattedLeft = leftCalendar.month.format('YYYY-MM');
    const formattedRight = rightCalendar.month.format('YYYY-MM');
    
    const dateIsVisible = date => {
      const formatted = date.format('YYYY-MM');
      return formatted === formattedLeft || formatted === formattedRight;
    };
    
    if (dateIsVisible(start) && dateIsVisible(end)) {
      // ...
    }