script programacion operadores operador logicos logico google distinto comparacion asignacion javascript bitwise-operators logical-operators

programacion - ¿Cuál es la diferencia entre & y && en JavaScript?



operadores de comparacion javascript (3)

¿Cuál es la diferencia entre & y && en JavaScript?

Ejemplo de código:

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 && es un "y" lógico que me da siempre el segundo valor si ambos son verdaderos.

Pero que es &?

(Por cierto, && parece ser "y" en Python; y parece ser & en Python).


& es bit a bit AND

Este operador espera dos números y devuelve un número. En caso de que no sean números, se emiten a números.

¿Como funciona? Wikipedia tiene una respuesta: https://en.wikipedia.org/wiki/Bitwise_operation#AND

Nota: En Javascript, se desaconseja el uso de este operador , ya que no hay ningún tipo de datos enteros, solo coma flotante. Por lo tanto, los flotantes se convierten en enteros antes de cada operación, lo que hace que sea lento. Además, no tiene un uso real en aplicaciones web típicas y produce código ilegible.

Regla general: evitar. No lo uses Raramente tiene lugar en un código JS mantenible y legible.

&& es lógico Y

Espera dos argumentos y regresa:

  • Primer término que evalúa a falso
  • Último término de lo contrario (si todos son verdaderos-y)

Aquí hay unos ejemplos:

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 definición se ajusta a la definición de lógica y del campo de las matemáticas.

&& operador de encadenamiento

La razón por la cual este operador se define como arriba es el encadenamiento del operador. Puede encadenar a este operador y aún así mantener las reglas anteriores.

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

&& cortocircuito

Como se puede ver en la definición, tan pronto como encuentre que un término es falso-y, no necesita preocuparse por los siguientes términos. Javascript incluso lleva esto un poco más allá, los términos ni siquiera son evaluados. Esto se llama cortocircuito.

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

Esta declaración no alerta nada y se devuelve false . Por lo tanto, podría usar el operador && como un reemplazo más corto para una instrucción if. Estos son equivalentes:

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

Casi todos los compresores JS usan este truco para ahorrar 2 bytes.


Para determinar si dos valores booleanos juntos son verdaderos o falsos, si desea verificarlos (como la validación en la página web), puede usar el operador "&". "&" es en forma de bit AND.

Con el operador "&&", una vez que encuentra que el primer valor es falso, finalizará la evaluación y no comprobará el segundo valor.


& es el bit a bit "y". Esto significa que si tiene dos números convertidos a binarios, el resultado es un número que tiene el 1 dígito en las posiciones donde ambos números tienen 1 .

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