Cómo comprobar si hay indefinido en JavaScript

Cuando se declara una variable sin que se le asigne un valor, su valor inicial es undefined.

¿Cómo se comprueba si un valor es undefined en JavaScript?

La respuesta corta

En los navegadores modernos, puede comparar de forma segura la variable directamente a undefined:

Algunas personas discuten la comparación con undefined porque los navegadores antiguos permitían reasignar su valor así:

Después de esa reasignación, comparando con undefined directamente ya no detectaría correctamente si a una variable se le asignó un valor.

Sin embargo, este comportamiento se corrigió en 2009 con ECMAScript 5:

En los navegadores modernos, » Ya no es posible reasignar el valor undefined global.

¿Qué sucede si necesito admitir IE8 y versiones anteriores?

Generalmente, comparando directamente con la ONU definido todavía es seguro. No hay ninguna razón práctica para que una aplicación reasigne el valor de undefined.

Thomas Eding lo demuestra con una analogía convincente:

Si aún está preocupado, hay dos formas de verificar si un valor no está definido, incluso si el undefined global se ha sobrescrito.

Puede usar el operador void para obtener el valor de undefined. Esto funcionará incluso si el valor global window.undefined se ha sobreescrito:

El cero en este ejemplo no «tiene ningún significado especial, también puede usar 1 o function(){}. void(anything) siempre se evaluará como undefined.

Alternativamente, puede usar el operador typeof para verificar con seguridad si un valor fue asignado. En lugar de comparar con el valor global undefined, verifica si el tipo del valor «s es» indefinido «:

Tenga en cuenta que esto es ligeramente diferente de las opciones anteriores. Incluso si name no fuera «declarado, typeof todavía diría que no está definido. Si comparas una variable no declarada con undefined o void(0) obtendrás un ReferenceError.

Pero no «t use void (0) directamente

Evite usar void(0) o typeof x === "undefined" literalmente en el código. Estas expresiones no se explican por sí mismas y deben incluirse en una función isUndefined como esta:

Muchas bibliotecas de utilidades ya tienen esta funcionalidad incorporada, por ejemplo, hay un _.isUndefined función en Underscore.js.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *