Cómo comprobar valor null en JavaScript (null vs undefined, mejores prácticas)
En JavaScript, null (valor nulo intencional) y undefined (variable declarada sin asignar) son "falsy" pero distintos. Comprobar correctamente evita bugs.
Operadores y métodos
1. Igualdad estricta (===) — Recomendado para null exacto
let valor = null;
if (valor === null) { /* es null */ }
Solo true para null. False para undefined, 0, "", false, NaN.
2. Igualdad floja (==) — Detecta null Y undefined
if (valor == null) { /* es null O undefined */ }
Útil atajo para "valor no asignado". No usa === (especie de excepción en el lenguaje).
3. Encadenamiento opcional (?.) — Acceso seguro a propiedades
const nombre = usuario?.perfil?.nombre; // undefined si usuario o perfil son null/undefined
const longitud = array?.length; // undefined si array es null/undefined
4. Operador de fusión nula (??) — Valor por defecto solo para null/undefined
const config = usuario.config ?? configuracionPorDefecto;
// Si usuario.config es null o undefined → usa configuracionPorDefecto
// Si es 0, "", false → USA 0, "", false (no el default)
Diferencia con || (OR lógico): || usa default para cualquier falsy (0, "", false, NaN, null, undefined). ?? solo para null/undefined.
5. Object.is() — Comparación estricta idéntica
Object.is(valor, null) // true solo si valor es null
Patrones comunes
Verificar argumento de función
function saludar(nombre) {
if (nombre == null) { // null o undefined
nombre = "Invitado";
}
// o moderno:
const nombreFinal = nombre ?? "Invitado";
console.log(`Hola, ${nombreFinal}`);
}
Comprobar propiedad en objeto
// Existe y no es null/undefined:
if (obj.prop != null) { ... }
// Existe (incluye valor null/undefined explícito):
if ('prop' in obj) { ... }
// Tiene propiedad propia (no heredada) y no null/undefined:
if (Object.hasOwn(obj, 'prop') && obj.prop != null) { ... }
Arrays: vacío vs null/undefined
const arr = null;
if (Array.isArray(arr) && arr.length > 0) { ... } // Seguro
// O:
if (arr?.length) { ... } // true si length > 0 (0 es falsy)
Resumen: qué usar cuándo
| Objetivo | Expresión |
|---|---|
| Es exactamente null | x === null |
| Es null o undefined | x == null / x === null || x === undefined |
| Valor por defecto si null/undefined | x ?? default |
| Valor por defecto si falsy (0, "", false...) | x || default |
| Acceso seguro propiedad anidada | obj?.prop?.sub |
| Ejecutar si NO es null/undefined | if (x != null) { ... } |
Errores clásicos
if (!x)trata 0, "", false, NaN igual que null — solo si eso es lo que quieres.typeof x === 'null'— typeof null === 'object' (bug histórico de JS). No funciona.- Confundir null (ausencia intencional) con undefined (no inicializado).
- ·Cómo crear un código QR con logo (branding) que funcione
- ·Cómo escanear código QR
- ·Cómo consultar códigos de área telefónicos
- ·Cómo escanear códigos de barras con iPhone (app Snappr)
- ·Cómo comprobar los códigos de área telefónicos
- ·Cómo verificar si tu cuenta de PayPal está verificada
- ·Cómo consultar mi correo electrónico de Charter
- ·Cómo compilar código Python en un ejecutable para Windows
- Cómo comprobar la conexión a Internet en Windows
- Cómo comprobar la tarjeta de sonido en Windows y Mac
- Cómo medir la velocidad de tu PC (CPU, disco, Internet, GPU)
- Cómo comprobar el uso de CPU en Windows (Administrador de tareas, Recursos, PowerShell)
- Cómo borrar un código de error de cartucho en impresoras HP
- Cómo medir la velocidad real de tu conexión a Internet
