Verificación de null, undefined y valores vacíos en JavaScript: guía completa

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

¿Por qué verificar null, undefined y vacío es un dolor para cada desarrollador de JavaScript?

\n\n

¿Alguna vez te has sorprendido pensando: «¿Por qué estoy escribiendo nuevamente esta engorrosa construcción con if (x !== null && x !== undefined && x !== '')?» Si es así, no estás solo. La pregunta «Is there a standard function to check for null, undefined, or blank variables in JavaScript?» en Stack Overflow ha acumulado miles de visitas. Y no es casualidad.

\n\n

JavaScript no tiene una función incorporada que verifique todo de una sola vez. Pero eso no significa que estemos condenados a sufrir. En este artículo, entenderemos por qué no existe tal función, cómo sortear elegantemente esta limitación y escribiremos nuestro helper ideal.

\n\n

¿Listo para convertir el caos de las verificaciones en código limpio y comprensible? ¡Allá vamos!

\n\n

¿Qué son null, undefined y blank (cadena vacía) en JavaScript?

\n\n

Antes de buscar la «píldora mágica», entendamos con qué estamos lidiando. Estos tres conceptos son tres bestias diferentes, y confundirlos es peligroso.

\n\n
    \n
  • undefined — la variable está declarada, pero no se le ha asignado un valor. Es el «valor por defecto» de JavaScript.
  • \n
  • null — la variable existe, pero se le ha asignado intencionalmente «nada». Es una decisión consciente del desarrollador.
  • \n
  • blank (cadena vacía) — '' o "". La cadena existe, pero no contiene caracteres.
  • \n
\n\n

La diferencia clave: null es un objeto (sí, es un error histórico de JS que ahora es una característica), undefined es un tipo especial, y la cadena vacía es una cadena.

\n\n
let a; // undefined\nlet b = null; // null\nlet c = ''; // cadena vacía (blank)\nconsole.log(typeof a); // "undefined"\nconsole.log(typeof b); // "object" (¡sí, así es!)\nconsole.log(typeof c); // "string"
\n\n

Ahora imagina: quieres verificar que una variable está «vacía» en cualquier sentido. La verificación habitual if (!value) funcionará para null y undefined, pero ¿no considerará la cadena vacía? ¡Sí, la considerará! Porque la cadena vacía es un valor falsy. Pero hay un truco...

\n\n

¿Por qué simplemente if (!value) es una mala idea?

\n\n

Sí, if (!value) detectará null, undefined, '', 0, false y NaN. Pero, ¿qué pasa si 0 o false son valores válidos para tu variable? Por ejemplo, si estás verificando la cantidad de productos en un carrito, 0 es normal, no es «vacío».

\n\n
function processOrder(itemCount) {\n    if (!itemCount) {\n        console.log('Error: ¡no hay productos!');\n    } else {\n        console.log('Procesando pedido...');\n    }\n}\nprocessOrder(0); // Error: ¡no hay productos! — Pero esto no es un error, son 0 productos
\n\n

Por eso necesitamos una función especializada, no una verificación universal de «veracidad».

\n\n

¿Una función estándar? No, pero hay patrones estándar

\n\n

A la pregunta «Is there a standard function?» la respuesta es no. Pero JavaScript ofrece herramientas flexibles para que puedas escribir la tuya propia. Y esto es incluso mejor, porque tu función se ajustará exactamente a tus requisitos de negocio.

\n\n

Opción 1: Verificación más simple (estricta)

\n\n

Si solo necesitas verificar null y undefined — usa la comparación estricta (===). Esta es la forma más segura.

\n\n
function isNullOrUndefined(value) {\n    return value === null || value === undefined;\n}\n\nconsole.log(isNullOrUndefined(null)); // true\nconsole.log(isNullOrUndefined(undefined)); // true\nconsole.log(isNullOrUndefined('')); // false\nconsole.log(isNullOrUndefined(0)); // false
\n\n

Ventaja: no confunde 0 y cadena vacía con «nada». Desventaja: no verifica vac

Blogs

Book Recommendations