there is a if statement
if ((sliding || "Window" == type) &&
    nbCasement % 2 != 1 || sliding || "Garage" == type || f({
    name: "hinge"
}),
    nbCasement > 0 && !sliding && f({
    name: "side"
}),
    d && apiProperty)
with && || and ,
I thought it's same with this code:
f({
    name: "hinge"
});
f({
    name: "side"
});
if ((sliding || "Window" == type) &&
    nbCasement % 2 != 1 || sliding || "Garage" == type ||
    nbCasement > 0 && !sliding &&
    d && apiProperty)
but the result is different what I thought.
How is this statement working?
which condition make f({name:xxx}) run?
the f defind is 
  var e = []
          , f = function(a) {
            d && d.blackList && d.blackList[a.name] || e.push(a)
        };
 
    