javascript是否有非短路布尔运算符?

Ste*_*ble 22 javascript logical-operators

在js

(f1() || f2())
Run Code Online (Sandbox Code Playgroud)

将不执行f2,如果f1回报率true通常是除了当它是不是一件好事.有||没有短路的版本?

就像是

var or = function(f, g){var a = f(); var b = g(); return a||b;}
Run Code Online (Sandbox Code Playgroud)

Tor*_*res 11

不,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      |
Run Code Online (Sandbox Code Playgroud)

基本上(a && b)是短路而!!(a + b)不是短路,它们产生相同的值.