Javascript conditional order evaluation
Can I count on Javascript failing immediately when one condition in an expression results to false?
f = {'a':'b'};
if (f.a !== undefined || f.a === 'b') {
// Is this OK to use, because the second condition will never be evaluated?
}
Yes, this is known as short circuit evaluation.
With an AND
logical operator, if the first evaluates to false
, then the second is never evaluated, because the condition knows enough already to be met.
With the OR
logical operator, if the first one is false
, it will evaluate the second one. Otherwise if the first is true
it won't evaluate the second (no need to).
This is also why you see...
var a = function(b) {
b = b || 7;
}