CodeForge

JavaScript de Cero a Experto / Objetos

Optional chaining y nullish: navegar sin explotar

Teoría18 min20 XP

TypeError: Cannot read properties of undefined — vas a ver ese error mil veces en tu carrera. Aparece cuando intentas leer una propiedad de algo que no existe. Hoy aprendes las dos herramientas modernas para trabajar con datos incompletos sin miedo: ?. para preguntar antes de entrar, y ?? para dar un plan B solo cuando de verdad no hay valor.

Tocar la puerta antes de entrar

Optional chaining (?.)

a?.b significa: "si a existe (no es null ni undefined), dame a.b; si no, devuelve undefined y no sigas". Úsalo en las fronteras donde los datos pueden venir incompletos — respuestas de APIs, configuraciones opcionales, formularios a medio llenar. No lo pongas en TODAS partes por reflejo: si una propiedad DEBE existir, es mejor que el error suene a que se esconda.

Nullish coalescing (??)

Cuando el valor puede faltar, casi siempre quieres un respaldo. Para eso ya conocías ||... que tiene una trampa famosa:

Un formulario guarda la cantidad de cuotas elegida: const cuotas = 0 significa 'pago de contado'. Muestras el valor con cuotas || 12 como respaldo. ¿Qué ve el usuario que eligió pagar de contado?

Mini-reto

En "Mi Bolsillo": crea un titular sin la propiedad presupuesto y con saldo: 0. Imprime titular.presupuesto?.comida ?? "sin presupuesto" y compara titular.saldo || "sin saldo" contra titular.saldo ?? "sin saldo" para ver la trampa del cero en vivo. Remata agregando el presupuesto anidado y comprobando que el ?. ahora sí lo encuentra.

Qué sigue

Tus objetos ya son robustos ante huecos. Siguiente pregunta: ¿cómo GUARDAS un objeto, o lo envías por internet? Un objeto vive en la memoria de tu programa; para que viaje necesita convertirse en texto. Ese texto tiene nombre: JSON, el idioma universal de intercambio de datos — próxima lección.