VOLVER

Comprobar undefined en JavaScript

2 min de lectura

Si escribes JavaScript regularmente, probablemente has necesitado comprobar si una variable es undefined.

Pero, ¿cuál es la mejor manera de hacerlo?

La manera intuitiva

Cualquier programador con experiencia en otros lenguajes intuirá:

if (x === undefined) { ... }

Esto funciona sin problemas--casi.

La comparación directa con undefined funciona en todos los navegadores modernos. Los navegadores antiguos, sin embargo, permitían la reasignación:

undefined = "new value";

Con esta reasignación, la comparación directa falla.

ECMAScript 5 arregló esto en 2009:

15.1.1.3 undefined
El valor de undefined es undefined (ver 8.1). Esta propiedad tiene los atributos { [[Writable]]: false, [[Enumerable]]: false, [[Configurable]]: false }.

La manera "segura"

Si soportas navegadores antiguos y te preocupa la reasignación de undefined, usa métodos alternativos.

Leyendo el tipo

El operador typeof devuelve "undefined" para valores undefined:

if (typeof x === "undefined") { ... }

Nota: typeof no lanza error para variables no declaradas.

Usando void

El operador void también devuelve undefined:

if (x === void(0)) { ... }

El cero no tiene significado especial. Como indica MDN:

El operador void evalúa la expresión dada y luego devuelve undefined.

Qué manera es mejor

Como consultor, aprendí la mejor respuesta: depende. Aquí van algunos consejos.

Sigue las convenciones existentes del código base. Para código nuevo solo en navegadores modernos, usa comparación directa--es clara y legible incluso para principiantes en JavaScript. Para soportar navegadores antiguos, crea una función isUndefined con tu método preferido dentro. Esto expresa la intención claramente.