Por exemplo:
var teste = 0;
function igual(i, j) {
teste++;
return i === j;
}
teste = 0;
if (igual(1,2) && igual(1,3)) {}
console.log('[E LOGICO] Quantidade de vezes: ' + teste);
teste = 0;
if (igual(1,2) & igual(1,3)) {}
console.log('[E OPERADOR BINARIO] Quantidade de vezes: ' + teste);
teste = 0;
if (igual(1,1) || igual(2,2)) {}
console.log('[OU LOGICO] Quantidade de vezes: ' + teste);
teste = 0;
if (igual(1,1) | igual(2,2)) {}
console.log('[OU OPERADOR BINARIO] Quantidade de vezes: ' + teste);
Sim, isso é verdade. Mas também é verdade, os resultados das seguintes instruções (que esta no comentário ao lado da instrução console.log):
var a = 10 || 0;
console.log(a); //"10"
var b = 11 && 1;
console.log(b); //"1"
var c = 2 | 1;
console.log(c); //"3"
var d = 2 & 1;
console.log(d); //"0"
O por que disso?
Porque os operadores binários ("&" e "|") fazem o calculo binário entre os valores. Exemplo:
Número 1
|
Operador
|
Número 2
|
Resultado
|
00000001
|
AND
|
00000010
|
00000000
|
00000001
|
OR
|
00000010
|
00000011
|
E é por isso que eles, também, tem que executar as duas instruções (operadores lógicos - "&&" e "||" - só precisam saber se o resultado é true ou false).
Complicado? Hum... só um pouco. :P
Até mais!
Nenhum comentário:
Postar um comentário