JavaScript comprueba si la variable existe (está definida/inicializada)
¿Qué método para comprobar si una variable ha sido inicializada es mejor/correcto? (Suponiendo que la variable pueda contener cualquier cosa (cadena, int, objeto, función, etc.))
if (elem) { // or !elem
o
if (typeof(elem) !== 'undefined') {
o
if (elem != null) {
1632
3
Quieres el operador
typeof
. Específicamente:En la mayoría de los casos se utilizaría:
A diferencia de un simple
if (elem)
, permite0
,false
,NaN
y''
, pero rechazanull
oundefined
, lo que lo convierte en un buen test general para la presencia de un argumento, o propiedad de un objeto.Las otras comprobaciones tampoco son incorrectas, simplemente tienen usos diferentes:
if (elem)
: puede usarse si se garantiza queelem
es un objeto, o sifalse
,0
, etc. se consideran valores "por defecto" (por lo tanto equivalen aundefined
onull
).La comprobación
typeof elem == 'undefined'puede utilizarse en los casos en los que un
null` especificado tiene un significado distinto al de una variable o propiedad no inicializada.Esta es la única comprobación que no arroja un error si
elem
no está declarado (es decir, no hay declaraciónvar
, no es una propiedad dewindow
, o no es un argumento de función). Esto es, en mi opinión, bastante peligroso ya que permite que los errores tipográficos pasen desapercibidos. Para evitarlo, vea el siguiente método.También es útil una comparación estricta contra
undefined
:Sin embargo, debido a que el global
undefined
puede ser anulado con otro valor, es mejor declarar la variableundefined
en el ámbito actual antes de usarla:O:
Una ventaja secundaria de este método es que los minificadores JS pueden reducir la variable
undefined
a un solo carácter, ahorrando unos cuantos bytes cada vez.Depende de si sólo te importa que la variable haya sido definida o si quieres que tenga un valor significativo.
Comprobando si el tipo es indefinido se comprobará si la variable ya ha sido definida.
Si
=== null
o!== null
sólo comprobará si el valor de la variable es exactamentenull
.== null
o!= null
comprobará si el valor esundefined
onull
.Si (valor) comprueba si la variable es "indefinida", "nula", "0" o una cadena vacía.