Javascript operadores lógicos y resultados
Sé que el resultado de las operaciones lógicas en la mayoría de los idiomas es verdadero, falso o 1,0. En Javascript probé lo siguiente:
alert(6||5) // => returns 6
alert(5||6) // => returns 5
alert(0||5) // => returns 5
alert(5||0) // => returns 5
alert(5||1) // => returns 5
alert(1||5) // => returns 1
alert(5&&6) // => returns 6
alert(6&&5) // => returns 5
alert(0&&5) // => returns 0
alert(5&&0) // => returns 0
alert(-1&&5) // => returns 5
alert(5&&-1) // => returns -1
Entonces, ¿cuál es el resultado de los operadores lógicos? Si un operando es 0 o 1, entonces funciona como se espera. Si ambos son distintos de cero y distintos de 1, entonces
En caso de lógica.or
, se devuelve el primer operando.En caso de lógica.and
, se devuelve el segundo operando.¿Es esta la regla general?
Otra cosa que no sé es el operador.|
.
He probado el operador|
Y obtuve diferentes resultados:
alert(5|8) // => returns 13
alert(8|5) // => returns 13
alert(-5|8) // => returs -5
alert(8|-5) // => returns -5
alert(0|1) // => returns 1
alert(1|0) // => returns 1
alert(1|1) // => returns 1
¿Qué hace realmente este operador?