Lección 10: Operadores Lógicos
🧠 Concepto
Section titled “🧠 Concepto”Los operadores lógicos nos permiten combinar condiciones booleanas. Son esenciales para crear lógica compleja en nuestros programas.
Los tres operadores lógicos
Section titled “Los tres operadores lógicos”&& (AND — Y lógico)
Devuelve true solo si ambos valores son verdaderos.
console.log(true && true); // trueconsole.log(true && false); // falseconsole.log(false && true); // falseconsole.log(false && false); // false|| (OR — O lógico)
Devuelve true si al menos uno de los valores es verdadero.
console.log(true || true); // trueconsole.log(true || false); // trueconsole.log(false || true); // trueconsole.log(false || false); // false! (NOT — Negación)
Invierte el valor booleano.
console.log(!true); // falseconsole.log(!false); // trueconsole.log(!0); // true (0 es falsy)console.log(!'hola'); // false ('hola' es truthy)Cortocircuito (Short-circuit evaluation)
Section titled “Cortocircuito (Short-circuit evaluation)”JavaScript evalúa solo lo necesario. En &&, si el primer valor es false, no evalúa el segundo. En ||, si el primer valor es true, no evalúa el segundo.
// AND short-circuit: si el primero es false, no evalúa el segundofalse && console.log('No me ejecuto'); // no muestra nadatrue && console.log('Me ejecuto'); // muestra el mensaje
// OR short-circuit: si el primero es true, no evalúa el segundotrue || console.log('No me ejecuto'); // no muestra nadafalse || console.log('Me ejecuto'); // muestra el mensajeValores truthy y falsy en operadores lógicos
Section titled “Valores truthy y falsy en operadores lógicos”Los operadores lógicos no siempre devuelven true o false. Devuelven el valor del operando que determina el resultado.
console.log('Hola' && 'Mundo'); // "Mundo" (ambos truthy, devuelve el último)console.log(null && 'Hola'); // null (null es falsy, cortocircuito)console.log('Hola' || null); // "Hola" (primer truthy)console.log('' || 'default'); // "default" ('' es falsy)💻 Ejemplo
Section titled “💻 Ejemplo”let edad = 25;let tieneLicencia = true;
// AND: ambos deben cumplirseif (edad >= 18 && tieneLicencia) { console.log('Puedes conducir');}
// OR: al menos uno debe cumplirselet esAdmin = false;let esModerador = true;if (esAdmin || esModerador) { console.log('Tienes acceso al panel');}
// NOT: negar una condiciónlet estaLogueado = false;if (!estaLogueado) { console.log('Debes iniciar sesión');}
// Cortocircuito práctico: valores por defectolet nombreUsuario = '';let nombre = nombreUsuario || 'Invitado';console.log('Hola,', nombre); // "Hola, Invitado"📝 Ejercicio
Section titled “📝 Ejercicio”- Crea un archivo
operadores-logicos.js. - Declara tres variables:
edad >= 18,tieneBoleto,estaEnLista. - Usa operadores lógicos para determinar si alguien puede entrar a un concierto:
- Debe ser mayor de edad Y tener boleto.
- O estar en la lista VIP (aunque no tenga boleto).
- Prueba diferentes combinaciones.
let edad = 20;let tieneBoleto = false;let estaEnLista = true;
// Condición compuestaif ((edad >= 18 && tieneBoleto) || estaEnLista) { console.log('¡Puedes entrar!');} else { console.log('No puedes entrar');}
// Experimenta con short-circuitconsole.log('Resultado:', 'valor1' && 'valor2' && 'valor3');console.log('Resultado:', null || 'default' || 'otro');⚠️ Nota
Section titled “⚠️ Nota”El operador && tiene mayor precedencia que ||. Esto significa que:
console.log(true || false && false); // true// Se evalúa como: true || (false && false)// true || false → trueUsa paréntesis para hacer explícita tu intención.
El patrón de valor por defecto con || es muy común:
let opciones = usuarioConfig || { tema: 'oscuro' };Y el patrón de ejecución condicional con &&:
estaLogueado && mostrarPanel();// Solo ejecuta mostrarPanel() si estaLogueado es true