Does JavaScript have non-shortcircuiting boolean operators?

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.

http://www.eecs.umich.edu/~bartlett/jsops.html


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/


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.