Quería verificar si la variable está definida o no. Por ejemplo, lo siguiente arroja un error no definido
alert( x );
¿Cómo puedo detectar este error?
javascript
variables
undefined
Jineesh
fuente
fuente
Respuestas:
En JavaScript,
null
es un objeto. Hay otro valor para las cosas que no existen,undefined
. El DOM regresanull
para casi todos los casos en los que no puede encontrar alguna estructura en el documento, pero en JavaScriptundefined
es el valor utilizado.Segundo, no, no hay un equivalente directo. Si realmente desea verificar específicamente
null
, haga lo siguiente:Si desea verificar si existe una variable, eso solo se puede hacer con
try
/catch
, yatypeof
que tratará una variable no declarada y una variable declarada con el valor deundefined
como equivalente.Pero, para verificar si una variable se declara y no es
undefined
:Anteriormente, era necesario utilizar el
typeof
operador para verificar indefinidamente, porque era posible reasignarundefined
como una variable. La vieja forma se veía así:El problema de
undefined
ser reasignable se solucionó en ECMAScript 5, que se lanzó en 2009. Ahora puede usar===
y!==
probar de forma seguraundefined
sin usar,typeof
ya queundefined
ha sido de solo lectura durante algún tiempo.Si desea saber si un miembro existe independientemente pero no le importa cuál es su valor:
Si quieres saber si una variable es verdadera :
Fuente
fuente
typeof
operador (typeof null == 'object'
). Elnull
valor es un valor primitivo , que es el único valor del tipo Nulo .La única forma de probar realmente si una variable es
undefined
hacer lo siguiente. Recuerde, indefinido es un objeto en JavaScript.Algunas de las otras soluciones en este hilo lo llevarán a creer que una variable no está definida aunque haya sido definida (con un valor de NULL o 0, por ejemplo).
fuente
ReferenceError
.undefined
que un objeto en JavaScript es información errónea. ¿Esta afirmación se relaciona con su respuesta de todos modos? Es un valorundefined
de tipoundefined
, asignado al identificador global nombradoundefined
.undefined
ha sido de solo lectura desde ES5. Usted puede probar de forma segura para el uso indefinidoif (x === undefined) {...}
o el uso de la taquigrafía como esto:if (x === void 0)
.Técnicamente, la solución adecuada es (creo):
A veces puedes ponerte perezoso y usar
pero eso permite que tanto una variable indefinida x, como una variable x que contenga nulo, devuelvan verdadero.
fuente
var x;
y luegotypeof x;
obtendrá"undefined"
como si lo hicieratypeof lakjdflkdsjflsj;
Una versión aún más fácil y más abreviada sería:
O
fuente
A menudo he hecho:
fuente
También puede usar el operador condicional ternario:
fuente
var a = false;
? Debería comprobar eso si ena===undefined
cambiovar x;
hacer lo anterior arrojará un error!a
probará verdadero paraundefined
, también prueba verdadero para0
ynull
yfalse
. Esto es muy incorrecto y debe eliminarse.A menudo uso la forma más simple:
EDITAR:
Sin inicializar la variable, se generará una excepción "Error de referencia no capturado: la variable no está definida ..."
fuente
Uncaught ReferenceError: variable is not defined
variable
se define porvar variable;
. Y este fragmento se anularávariable
en el ámbito local. Puede romper la lógica que espera acceder a un cierre o variable global. Es decir:var variable = 1; function test() { var variable; if (variable === undefined){ console.log('Variable is undefined'); } else { console.log('Variable is defined: ' + variable); } } test(); // Variable is undefined
Otra posible "solución" es usar el
window
objeto. Evita el problema de error de referencia en un navegador.fuente
undefined
. Esto no hará eso.¡El error te dice que
x
ni siquiera existe! No se ha declarado , lo que es diferente de que se le asigne un valor.Si declaras
x
, no obtendrás un error. Recibiría una alerta que diceundefined
porquex
existe / ha sido declarado pero no se le ha asignado un valor.Para verificar si la variable ha sido declarada, puede usar
typeof
cualquier otro método para verificar si existe una variable generará el mismo error que obtuvo inicialmente.Esto verifica el tipo de valor almacenado en
x
. Solo volveráundefined
cuandox
no se haya declarado O si se ha declarado y aún no se ha asignado.fuente
typeof
operador.El
void
operador regresaundefined
por cualquier argumento / expresión que se le pase. para que pueda probar el resultado (en realidad, algunos minificadores cambian su código deundefined
avoid 0
para guardar un par de caracteres)Por ejemplo:
fuente
typeof
y pensarundefined
puede reasignarse, lo que no ha sido posible durante aproximadamente una década.undefined
, porque Dios solo sabe qué razón, el usovoid 0
siempre volveráundefined
independientemente.Podemos comprobar de la
undefined
siguiente manerafuente
Solo haz algo como a continuación:
y lo llaman así:
fuente
La respuesta aceptada es correcta. Solo quería agregar una opción más. También puede usar el
try ... catch
bloqueo para manejar esta situación. Un ejemplo extraño:Tenga en cuenta el
catch
bloqueo, que es un poco desordenado, ya que crea un alcance a nivel de bloque. Y, por supuesto, el ejemplo está extremadamente simplificado para responder la pregunta, no cubre las mejores prácticas en el manejo de errores;).fuente
Utilizo una pequeña función para verificar que se haya declarado una variable, lo que realmente reduce la cantidad de desorden en mis archivos javascript. Agrego un cheque para el valor para asegurarme de que la variable no solo exista, sino que también se le haya asignado un valor. La segunda condición verifica si la variable también ha sido instanciada, porque si la variable ha sido definida pero no instanciada (vea el ejemplo a continuación), todavía arrojará un error si intenta hacer referencia a su valor en su código.
No instanciado -
var my_variable;
Instantado -var my_variable = "";
Luego puede usar una declaración condicional para probar que la variable ha sido definida Y instanciada de esta manera ...
o para probar que no se ha definido y uso instanciado ...
fuente
return typeof el !== "undefined" && typeof el.val() !== "undefined"