Search code examples
javascriptshort-circuiting

Shorthand JS Condition


I need a bit of assistance with this shorthand condition. My attempt at it so far is becoming a bit of a challenge and cant seem to make it more readable. I believe it was short circuited from minifying.

  if (a === !0 || perSearch.rates.fy2) {
    e();
  } else if ( perSearch.rates.fy1.multiple || perSearch.rates.fy2.multiple ){
    calculateRates();
  } else {
    perSearch.rates.fy1.multiple;
  }

From this terse expression:

a === !0 || (perSearch.rates.fy2 ? perSearch.rates.fy1.multiple || perSearch.rates.fy2.multiple ? e() : calculateRates() : perSearch.rates.fy1.multiple ? e() : calculateRates())

Solution

  • Your expression corresponds to

    if (a === !0) {
    } else {
        if (perSearch.rates.fy2) {
            if (perSearch.rates.fy1.multiple || perSearch.rates.fy2.multiple) {
                e();
            } else {
                calculateRates();
            }
        } else {
            if (perSearch.rates.fy1.multiple) {
                e();
            } else {
                calculateRates();
            }
        }
    }
    

    which can be simplified to

    if (a !== true) {
        if (perSearch.rates.fy1.multiple || (perSearch.rates.fy2 && perSearch.rates.fy2.multiple)) {
            e();
        } else {
            calculateRates();
        }
    }