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? }
When using the AND operator, all conditions must evaluate to true for the code to run. By default, JavaScript will evaluate if statement conditions from left to right.
In JavaScript we have the following conditional statements: Use if to specify a block of code to be executed, if a specified condition is true. Use else to specify a block of code to be executed, if the same condition is false. Use else if to specify a new condition to test, if the first condition is false.
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; }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With