Qual é a diferença entre & e && em JavaScript?

Qual é a diferença entre & e && em JavaScript?

Código de exemplo:

var first = 123; var second = false; var third = 456; var fourth = "abc"; var fifth = true; alert(first & second); // 0 alert(first & third); // 72 alert(first & fourth); // 0 alert(first & fifth); // 1 alert(first && second); // false alert(first && third); // 456 alert(first && fourth); // abc alert(first && fifth); // true 

Parece que && é um “e” lógico que me dá sempre o segundo valor se ambos forem verdadeiros.

Mas o que é e?

(A propósito, && parece ser “e” em Python; & parece ser & em Python.)

& é bit a bit E

Este operador espera dois números e retune um número. Caso não sejam números, são convertidos em números.

Como funciona? A Wikipédia tem uma resposta: https://en.wikipedia.org/wiki/Bitwise_operation#AND

Nota: No Javascript, o uso deste operador é desencorajado, desde que não há nenhum tipo de dados do inteiro, apenas ponto flutuante. Assim, os floats são convertidos em números inteiros antes de cada operação, tornando-a lenta. Além disso, não tem uso real em aplicações web típicas e produz código ilegível.

Regra geral: evite. Não use isso. Raramente tem lugar em um código JS legível e legível.

&& é lógico E

Espera dois argumentos e retornos:

  • Primeiro termo que avalia a falsa
  • Último termo em contrário (se todos forem verdadeiros y)

aqui estão alguns exemplos:

 0 && false 0 (both are false-y, but 0 is the first) true && false false (second one is false-y) true && true true (both are true-y) true && 20 20 (both are true-y) 

Esta definição está em conformidade com a definição de lógica e do campo da matemática.

&& operador de encadeamento

A razão pela qual esse operador é definido como acima é o encadeamento do operador. Você é capaz de encadear esse operador e ainda manter as regras acima.

 true && 20 && 0 && 100 0 (it is the first false-y) 10 && 20 && true && 100 100 (last one, since all are true-y) 

&& curto-circuito

Como pode ser visto a partir da definição, assim que você descobrir que um termo é falso, você não precisa se preocupar com os termos a seguir. O JavaScript até leva isso ainda mais longe, os termos nem sequer são avaliados. Isso é chamado de curto-circuito.

 true && false && alert("I am quiet!") 

Esta declaração não alerta nada e false é retornado. Portanto, você pode usar o operador && como substituto mais curto para uma instrução if. Estes são equivalentes:

 if (user.isLoggedIn()) alert("Hello!") user.isLoggedIn() && alert("Hello!") 

Quase todos os compressores JS usam esse truque para economizar 2 bytes.

& é o bit a bit “e”. Isso significa que se você tiver dois números convertidos em binário, o resultado será um número que tenha 1 dígito nas posições em que ambos os números tenham 1 .

  100011 //35 & 111001 //57 --------- 100001 //35 & 57 == 33 

Para determinar se dois valores booleanos juntos são verdadeiros ou falsos, se você quiser verificar ambos (como validação na página da web), você pode usar o operador “&”. “&” é bit a bit E.

Com o operador “&&”, uma vez que ele encontre o primeiro valor é falso, ele finalizará a avaliação e não verificará o segundo valor.

    Intereting Posts