Ответ 1
Нет, JavaScript не похож на Java, и единственными логическими операторами являются короткозамкнутые
https://developer.mozilla.org/en/JavaScript/Reference/Operators/Logical_Operators
Возможно, это может вам помочь:
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 |
В принципе (a && b)
является короткозамкнутым, а !!(a + b)
- нет, и они производят одно и то же значение.