Operadores de comparación

Los operadores de comparación comparan los valores de dos operandos y evalúan si la declaración que forman es true o false. En el siguiente ejemplo, se usa el operador de igualdad estricta (===) para comparar dos operandos: la expresión 2 + 2 y el valor 4. Debido a que el resultado de la expresión y el valor numérico 4 son iguales, esta expresión se evalúa como true:

2 + 2 === 4
> true

Coerción y igualdad de tipos

Dos de los operadores de comparación más usados son == para la igualdad baja y === para la igualdad estricta. == realiza una comparación general entre dos valores mediante la coerción de los operandos para que coincidan con los tipos de datos, si es posible. Por ejemplo, 2 == "2" muestra true, aunque la comparación se realice entre un valor numérico y un valor de string.

2 == 2
> true

2 == "2"
> true

Lo mismo sucede con !=, que muestra true solo si los operandos que se comparan no son iguales de manera general.

2 != 3
> true

2 != "2"
> false

Las comparaciones estrictas con === o !== no realizan la coerción de tipos. Para que una comparación estricta evalúe como true, los valores que se comparen deben tener el mismo tipo de datos. Por este motivo, 2 == "2" muestra true, pero 2 === "2" muestra false:

2 === 3
> false

2 === "2"
> false

Para quitar cualquier ambigüedad que pueda resultar de la coerción automática, usa === siempre que sea posible.

Operador Descripción Uso Resultado
=== Estrictamente igual 2 === 2 verdadero
!== No estrictamente igual 2 !== "2" verdadero
== Igual (o "inigualable") 2 == "2" verdadero
!= No igual 2 != "3" verdadero
> Mayor que 3 > 2 verdadero
>= Mayor o igual que 2 >= 2 verdadero
< Menor que 2 < 3 verdadero
<= Menor o igual que 2 <= 3 verdadero

Veraz y falso

Todos los valores en JavaScript son true o false de manera implícita, y se pueden forzar al valor booleano correspondiente, por ejemplo, a través del comparador "de forma no estricta". Un conjunto limitado de valores se fuerza a false:

  • 0
  • null
  • undefined
  • NaN
  • Una cadena vacía ("")

Todos los demás valores se convierten en true, incluida cualquier string que contenga uno o más caracteres y todos los números que no sean cero. Estos se suelen llamar valores "de verdad" y "falsidad".

"My string" == true
> true

100 == true
> true

0 == true
> false

Operadores lógicos

Usa los operadores lógicos AND (&&), OR (||) y NOT (!) para controlar el flujo de una secuencia de comandos en función de la evaluación de dos o más sentencias condicionales:


2 === 3 || 5 === 5;
> true

2 === 2 && 2 === "2"
> false

2 === 2 && !"My string."
> false

Una expresión lógica NOT (!) niega el valor veraz o falso de un operando y evalúa a true si el operando se evalúa como false y false si el operando se evalúa como true:


true
> true

!true
> false

!false
> true

Usar el operador lógico NOT (!) frente a otro tipo de datos, como un número o una cadena, coerciona ese valor a un valor booleano y revierte el valor veraz o falso del resultado.

"string"
> "string"

!"string"
> false

0
> 0

!0
> true

Es una práctica común usar dos operadores NOT para forzar rápidamente los datos a su valor booleano coincidente:

!!"string"
> true

!!0
> false

Los operadores lógicos AND y OR no realizan ninguna coerción por sí mismos. Muestran el valor de uno de los dos operandos evaluados, y esa evaluación determina el operando elegido.

La lógica AND (&&) muestra el primero de sus dos operandos solo si ese operando se evalúa como false, y el segundo operando en caso contrario. En las comparaciones que se evalúan como valores booleanos, muestra true solo si los operandos en ambos lados del operador lógico AND se evalúan como true. Si cualquiera de los lados se evalúa como false, muestra false.

true && false
> false

false && true
> false

false && false
> false

true && true
> true

Cuando se usa && con dos operandos no booleanos, el primer operando se muestra sin cambios si se puede forzar a false. Si el primer operando se puede coercionar a true, el segundo operando se muestra sin cambios:

false && "My string"
> false

null && "My string"
> null

"My string" && false
> false

"My string" && "My second string"
> "My second string"

2 === 2 && "My string"
> "My string"

OR lógico (||) muestra el primero de sus dos operandos solo si ese operando se evalúa como true y el segundo operando en caso contrario. En las comparaciones que se evalúan como valores booleanos, esto significa que muestra true si alguno de los operandos se evalúa como true y si ninguno de los lados se evalúa como true, muestra false:

true || false
> true

false || true
> true

true || true
> true

false || false
> false

Cuando se usa || con dos operandos no booleanos, muestra el primer operando sin cambios si se puede forzar a true. Si el primer operando se puede coercionar a false, el segundo operando se muestra sin cambios:

false || "My string"
> "My string"

null || "My string"
> "My string"

"My string" || false
> "My string"

"My string" || "My second string"
> "My string"

2 === 2 || "My string"
> true

Operador coalescente nulo

Presentado en ES2020, el "operador coalescente nulo" (??) muestra el primer operando solo si ese operando tiene algún valor distinto de null o undefined. De lo contrario, muestra el segundo operando.

null ?? "My string"
> "My string"

undefined ?? "My string"
> "My string"

true ?? "My string";
> true

?? es similar a un OR lógico, pero más estricto en cuanto a la forma en que se evalúa el primer operando. || muestra el segundo operando para cualquier expresión que se pueda forzar a false, incluidos undefined y null. ?? muestra el segundo operando cuando el primer operando no es null ni undefined, incluso si se puede forzar a false:

0 ?? "My string";
> 0

false ?? "My string";
> false

undefined ?? "My string";
> "My string"

Operadores lógicos de asignación

Usa operadores de asignación para asignar el valor de un segundo operador a un primer operador. El ejemplo más común es un signo igual (=), que se usa para asignar un valor a una variable declarada.

Usa operadores de asignación lógica para asignar condicionalmente un valor a una variable según el valor veraz o falso de esa variable.

El operador de asignación AND lógico (&&=) evalúa el segundo operando y lo asigna al primer operando si el primer operando se evaluaría como true; de hecho, "si el primer operando es verdadero, asígnale el valor del segundo operando:"

let myVariable = false;
myVariable &&= 2 + 2;
> false

myVariable = true;
myVariable &&= 2 + 2;
> 4

El valor verdadero o falso del primer operando determina si se realiza una asignación. Sin embargo, cuando se intenta evaluar el primer operando con un operador de comparación, se genera un valor booleano true o false, al que no se le puede asignar un valor:

let myVariable = 5;
myVariable > 2 &&= "My string"
> SyntaxError: Invalid left-hand side in assignment

El operador de asignación OR lógico (||=) evalúa el segundo operando y lo asigna al primer operando si el primero se evalúa como false; de hecho, "si el primer operando es falso, asígnale el valor del segundo operando":

let myVariable = false;
myVariable ||= 2 + 2;
> 4

myVariable = true;
myVariable ||= 2 + 2;
> true

Verifica tus conocimientos

¿Qué operador indica "estrictamente igual"?

===
==
=
!=