JavaScript de Cero a Experto / Objetos
Optional chaining y nullish: navegar sin explotar
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.