w3schools programacion operadores logicos asignacion javascript

programacion - ¿Tiene javascript operadores booleanos que no sean de corto circuito?



operadores logicos javascript html (4)

JavaScript TIENE una sola tubería ( | , bit a bit) y operadores con un solo símbolo ( & , bit a bit AND) que no tienen cortocircuito, pero nuevamente son bitwise, no lógicos.

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

En js

(f1() || f2())

no ejecutará f2 si f1 devuelve true que generalmente es bueno, excepto cuando no lo es. ¿Hay una versión de || que no hace corto circuito

algo como

var or = function(f, g){var a = f(); var b = g(); return a||b;}


No, JavaScript no es como Java y los únicos operadores lógicos son los cortocircuitos

https://developer.mozilla.org/en/JavaScript/Reference/Operators/Logical_Operators

Tal vez esto podría ayudarte:

cdmckay.org/blog/2010/09/09/…

| 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 |

Básicamente (a && b) es un cortocircuito, mientras que !!(a + b) no lo es y producen el mismo valor.


Podría usar bit a bit O siempre que sus funciones devuelvan valores booleanos (¿o eso realmente importaría?):

if (f1() | f2()) { //... }

Jugué con esto aquí: http://jsfiddle.net/sadkinson/E9eWD/1/


Si necesita f2 () para ejecutarse independientemente de si f1 () es verdadero o falso, simplemente debe llamarlo, devolver una variable booleana y usarla en su condicional. Es decir, use: if (f1 () || f2IsTrue)

De lo contrario, use una barra simple o una sola y como lo sugiere GregC.