Fundamentos de JavaScript

Teoría: Resultados de operaciones lógicas

Hasta ahora viste que ||, ! y && se usan para combinar condiciones:

edad > 18 && tieneDocumento
rol === 'admin' || rol === 'editor'

¿Qué pasa si una variable no tiene valor?

Cuando programamos, a veces una variable no tiene nada dentro. No es un error, simplemente no se ha definido aún.

const usuario = '';
const edad = 0;

¿Qué hacemos si no hay nombre? ¿O si alguien tiene 0 años? JavaScript nos ayuda con: || y &&.

|| — "O bien esto… o lo otro"

Este operador busca el primer valor que funcione. Si el primero no sirve (está vacío, es 0, etc.), usa el segundo.

Asignar un valor por defecto si no hay nombre

const nombre = usuario || 'Anónimo';
  • Si usuario tiene algo (como 'Ana'), se usa ese valor.
  • Si usuario está vacío (''), se usa 'Anónimo'.

Otros ejemplos

console.log('Ana' || 'Otro');     // "Ana" — se usa el primero
console.log('' || 'Otro');        // "Otro" — el primero está vacío
console.log(0 || 18);             // 18 — cuidado: el 0 se ignora
console.log(undefined || 'Ninguno'); // "Ninguno"

&& — "Solo si esto… entonces lo otro"

Este operador solo sigue si todo está bien: Si la primera parte es verdadera, evalúa la siguiente.

Verificar si existe algo antes de acceder

const mostrarNombre = usuario && usuario.nombre;
  • Si usuario no existe, se detiene.
  • Si existe, intenta acceder a usuario.nombre.

Otros ejemplos

console.log(1 && 'Hola');         // "Hola" — todo bien
console.log(0 && 'Hola');         // 0 — se detiene
console.log('Sí' && 'Funciona');  // "Funciona"
console.log(undefined && 123);    // undefined

¡Error común con ||!

A veces queremos comprobar si una variable tiene un valor específico, por ejemplo 'admin' o 'editor', y escribimos esto:

if (rol === ('admin' || 'editor')) {
  // ...
}

❌ Parece correcto, pero en realidad no funciona como esperas. El operador || elige el primer valor que funcione, así que 'admin' || 'editor' siempre devuelve 'admin'.

✅ Si quieres verificar ambos, escribe esto:

rol === 'admin' || rol === 'editor';

⚠️ Cuidado con valores como 0 o ''!

Mira este caso:

const edad = 0 || 18;
console.log(edad); // 18 ❌

Queríamos que edad fuera 0, pero JavaScript vio que 0 "no sirve" y usó el 18.

👉 Esto pasa con algunos valores especiales como:

0, '', null, undefined, false, NaN

JavaScript los considera como "vacíos" y los salta al usar ||. Más adelante aprenderás a usar un operador más preciso (??) para estos casos.

! — Negar un valor

Este operador invierte un valor lógico.

console.log(!true);  // false
console.log(!false); // true

También puedes usarlo para ver si algo "tiene valor" o no:

console.log(!'');      // true (está vacío)
console.log(!'Hola');  // false (tiene algo)
console.log(!0);       // true (es cero)
console.log(!123);     // false (tiene número)

!! — Ver si algo es "verdadero" o "vacío"

A veces queremos saber si una variable tiene algo o nada. Con !! podemos convertirlo a true o false directamente.

console.log(!!'Hola'); // true
console.log(!!'');     // false
console.log(!!0);      // false
console.log(!!42);     // true

✅ Esto es útil cuando en el futuro empieces a hacer verificaciones, como:

// Aún no lo estudiaste, pero luego escribirás cosas así:
if (!!email) {
  // Solo se ejecuta si email tiene contenido
}
Operador¿Qué hace?EjemploResultado
||Devuelve el primer valor útil (o el último si todos fallan)'Ana' || 'Otro''Ana'
&&Devuelve el primer valor que falle (o el último si todos funcionan)'Sí' && 'Funciona''Funciona'
!Invierte el valor (truefalse, falsetrue)!falsetrue
!!Convierte cualquier cosa a true o false!!'Texto'true

Resumen

  • || (OR) devuelve el primer valor verdadero o el último si todos son falso.
  • && (AND) devuelve el primer valor falso el último si todos son verdaderos.
  • Valores falsos: 0, '', null, undefined, NaN, false.
  • Usar || para valores predeterminados puede generar errores si 0 es un valor válido. Es mejor usar ??.
  • El operador de negación ! niega un booleano, y !! convierte cualquier valor en booleano.

Estos operadores son muy útiles en JavaScript, pero debemos entender bien sus reglas para evitar errores. ¡Practícalos y úsalos sabiamente!