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.
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".
La disyunción es verdadera cuando al menos una de las proposiciones es verdadera.
Ejemplo en lenguaje natural:
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 |
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.
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.
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.
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.
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.
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.
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 | || |
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.
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.
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 |
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.
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.