9. Disyunción (OR)

La disyunción une proposiciones y es verdadera cuando al menos una de ellas es verdadera. En programación se usa para expresar alternativas y caminos posibles.

9.1 Introducción

La disyunción es un operador lógico binario que combina dos proposiciones. Se lee como o.

Si tenemos dos proposiciones p y q, la disyunción se escribe p ∨ q y se lee "p o q".

9.2 Idea principal

La disyunción es verdadera cuando al menos una de las proposiciones es verdadera.

Para que p ∨ q sea verdadera, alcanza con que p sea verdadera, que q sea verdadera o que ambas sean verdaderas.

Ejemplo en lenguaje natural:

  • p: El usuario es administrador.
  • q: El usuario es supervisor.
  • p ∨ q: El usuario es administrador o supervisor.

9.3 Tabla de verdad

La tabla de verdad de la disyunción muestra que el resultado solo es falso cuando ambas proposiciones son falsas.

p q p ∨ q
V V V
V F V
F V V
F F F

9.4 OR inclusivo

En lógica matemática, la disyunción normalmente es inclusiva. Esto significa que la expresión p ∨ q también es verdadera cuando p y q son verdaderas al mismo tiempo.

"Puede acceder si es administrador o supervisor" permite el acceso a quien sea administrador, supervisor o ambas cosas.

Cuando se quiere expresar que debe cumplirse exactamente una opción y no ambas, se usa la disyunción exclusiva, que estudiaremos en el próximo tema.

9.5 Disyunción en JavaScript

En JavaScript, la disyunción lógica se expresa con el operador ||.

const esAdmin = false;
const esSupervisor = true;

const puedeAcceder = esAdmin || esSupervisor;

console.log(puedeAcceder);

El resultado es true porque una de las dos proposiciones es verdadera.

9.6 Cuando ambas proposiciones son falsas

La disyunción solo falla cuando ninguna alternativa se cumple.

const tieneEmailVerificado = false;
const tieneTelefonoVerificado = false;

const puedeRecuperarCuenta = tieneEmailVerificado || tieneTelefonoVerificado;

console.log(puedeRecuperarCuenta);

Como no hay email verificado ni teléfono verificado, el resultado es false.

9.7 Disyunción con más de dos proposiciones

Una disyunción puede combinar varias proposiciones. El resultado será verdadero si al menos una de ellas es verdadera.

const pagoConTarjeta = false;
const pagoConTransferencia = false;
const pagoConEfectivo = true;

const pagoValido = pagoConTarjeta || pagoConTransferencia || pagoConEfectivo;

console.log(pagoValido);

La expresión completa es verdadera porque una de las alternativas se cumple.

9.8 OR en estructuras if

El operador OR es útil cuando un bloque debe ejecutarse si se cumple cualquiera de varias condiciones.

const rol = "editor";

if (rol === "admin" || rol === "editor") {
  console.log("Puede publicar contenido");
} else {
  console.log("No puede publicar contenido");
}

El usuario puede publicar si su rol es administrador o editor.

9.9 Comparación entre AND y OR

La diferencia entre conjunción y disyunción es clave para expresar reglas correctamente.

Operador Se lee Resultado verdadero cuando... JavaScript
Conjunción Y Todas las proposiciones son verdaderas &&
Disyunción O Al menos una proposición es verdadera ||

9.10 Evaluación de izquierda a derecha

JavaScript evalúa una disyunción de izquierda a derecha. Si encuentra una parte verdadera, ya no necesita evaluar las demás para saber que el resultado final será verdadero.

const usuarioEnCache = true;

if (usuarioEnCache || consultarBaseDeDatos()) {
  console.log("Usuario encontrado");
}

Si usuarioEnCache es verdadero, la segunda parte no se evalúa. Este comportamiento se conoce como evaluación de cortocircuito.

9.11 OR lógico y valores no booleanos

En lógica matemática usamos verdadero y falso. En JavaScript, el operador || también puede trabajar con valores no booleanos y devolver uno de ellos.

const nombreIngresado = "";
const nombrePorDefecto = "Invitado";

const nombreVisible = nombreIngresado || nombrePorDefecto;

console.log(nombreVisible);

Este uso es propio de JavaScript. Para estudiar lógica formal, conviene pensar primero en expresiones que devuelven explícitamente true o false.

9.12 Disyunción y reglas de negocio

La disyunción aparece cuando una acción puede permitirse por más de un camino.

Situación Regla Expresión
Recuperar cuenta Tiene email verificado o teléfono verificado emailVerificado || telefonoVerificado
Acceder a panel Es administrador o supervisor esAdmin || esSupervisor
Aplicar envío gratis Es cliente premium o la compra supera un monto clientePremium || compraGrande
Aceptar identificación Presentó DNI o pasaporte presentoDni || presentoPasaporte

9.13 Disyunción combinada con AND

Muchas reglas combinan OR con AND. En esos casos, los paréntesis ayudan a expresar la intención correctamente.

const esAdmin = false;
const esEditor = true;
const cuentaActiva = true;

const puedeEditar = (esAdmin || esEditor) && cuentaActiva;

console.log(puedeEditar);

La expresión indica que el usuario debe ser administrador o editor, y además su cuenta debe estar activa.

9.14 Errores comunes

  • Confundir OR inclusivo con "una cosa o la otra, pero no ambas".
  • Usar || cuando la regla exige que se cumplan todas las condiciones.
  • No usar paréntesis al mezclar || con &&.
  • Olvidar que la disyunción solo es falsa cuando todas sus partes son falsas.
  • Confundir el comportamiento lógico con usos especiales de JavaScript para valores no booleanos.

9.15 Qué debes recordar de este tema

  • La disyunción se representa como p ∨ q y se lee "p o q".
  • Es verdadera cuando al menos una proposición es verdadera.
  • En lógica clásica, OR normalmente es inclusivo.
  • En JavaScript se expresa con ||.
  • Los paréntesis son importantes al combinar OR con otros operadores.

9.16 Conclusión

La disyunción permite expresar alternativas. Es fundamental cuando una acción puede permitirse por distintos caminos o cuando existen varias condiciones suficientes.

En el próximo tema estudiaremos la disyunción exclusiva, también conocida como XOR.