Does JavaScript have non-shortcircuiting boolean operators?
Nope, JavaScript is not like Java and the only logical operators are the short-circuited
https://developer.mozilla.org/en/JavaScript/Reference/Operators/Logical_Operators
Maybe this could help you:
http://cdmckay.org/blog/2010/09/09/eager-boolean-operators-in-javascript/
| a | b | a && b | a * b | a || b | a + b ||-------|-------|--------|-----------|--------|-----------|| false | false | false | 0 | false | 0 || false | true | false | 0 | true | 1 || true | false | false | 0 | true | 1 || true | true | true | 1 | true | 2 || a | b | a && b | !!(a * b) | a || b | !!(a + b) ||-------|-------|--------|-----------|--------|-----------|| false | false | false | false | false | false || false | true | false | false | true | true || true | false | false | false | true | true || true | true | true | true | true | true |
Basically (a && b)
is short-circuiting while !!(a + b)
is not and they produce the same value.
You could use bit-wise OR as long as your functions return boolean values (or would that really matter?):
if (f1() | f2()) { //...}
I played with this here: http://jsfiddle.net/sadkinson/E9eWD/1/
JavaScript DOES have single pipe (|
, bitwise OR) and single ampersand operators (&
, bitwise AND) that are non-short circuiting, but again they are bitwise, not logical.