validar - ¿Cómo comprobar si existe una variable en javascript?
validar variables indefinidas javascript (8)
Creo que depende de lo que quieras hacer con la variable.
Digamos, por ejemplo, que tiene una biblioteca JS que llamará a una función si se ha definido y si no, entonces no. Probablemente ya sepa que las funciones son objetos de primer nivel en JS y son tales variables.
Podría sentirse tentado a preguntar primero si existe, y luego llamarlo. Pero también puede envolver el intento de llamarlo en un bloque try / catch.
Ejemplo de código que llama a una función, si está definida, antes y después de disparar un evento:
function fireEvent(event)
{
try
{
willFireEvent(event); // Is maybe NOT defined!
} catch(e) {}
//... perform handler lookup and event handling
try
{
hasFiredEvent(event); // Might also NOT exist!
} catch(e) {}
}
Entonces, en lugar de verificar la variable, atrapa el error:
var x;
try
{
x = mayBeUndefinedVar;
}
catch (e)
{
x = 0;
}
Si esto es bueno o no en términos de rendimiento, etc., depende de lo que estés haciendo ...
No estoy preguntando si la variable no está definida o si es null
. Quiero comprobar si la variable existe o no. es posible?
Cuando intenta acceder a una variable que no está declarada en el contexto, verá que el mensaje de error dice que no está definido. Esta es la comprobación real que puede realizar para ver si la variable está definida o no en la comprobación nula.
Las técnicas de typeof
no funcionan porque no distinguen cuando una variable no se ha declarado en absoluto y cuando una variable se ha declarado pero no se le ha asignado un valor, o se ha declarado y se ha establecido igual a indefinido.
Pero si intenta usar una variable que no ha sido declarada en una condición if (o en el lado derecho de una asignación), obtiene un error. Así que esto debería funcionar:
var exists = true;
try {
if (someVar)
exists = true;
} catch(e) { exists = false; }
if (exists)
// do something - exists only == true if someVar has been declared somewhere.
Lo que buscas es:
window.hasOwnProperty("varname");
Un enfoque más seguro podría ser:
this.hasOwnProperty("varname");
Depende de tu contexto de llamada aunque ...
Si no necesita saber en tiempo de ejecución, use JSLint. También recuerde que las declaraciones de var de javascript están elevadas, por lo que incluso si la var está dentro de un bloque if, todavía se definirá.
Honestamente, creo que si no está seguro de si una variable está definida, está haciendo algo mal y debería refactorizar su código.
Yo uso esta función:
function exists(varname){
try {
var x = eval(varname);
return true;
} catch(e) { return false; }
}
Espero que esto ayude.
prueba esto
var ex=false;
try {(ex=myvar)||(ex=true)}catch(e) {}
alert(ex);
donde ex
es verdadero si myvar
ha sido declarado.
ejemplo de trabajo: http://jsfiddle.net/wcqLz/
if (''bob'' in window) console.log(bob);
Tenga en cuenta que de esta manera, incluso si declarara una variable con var
, eso significaría que existe.