Operadores e resultados lógicos de Javascript
Eu sei que o resultado de operações lógicas na maioria das linguagens é verdadeiro, falso ou 1,0. Em Javascript tentei o seguinte:
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
Então, qual é o resultado de operadores lógicos? Se um operando for 0 ou 1, funcionará como esperado. Se ambos forem diferentes de zero e outros que não 1
Em caso de lógicoor
, o primeiro operando é retornadoEm caso de lógicoand
, o segundo operando é retornadoEsta é a regra geral?
Outra coisa que eu não sei é o operador|
.
Eu tentei o operador|
e obteve resultados diferentes:
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
O que esse operador realmente faz?