¿Cómo debo probar si una variable está definida?¿Prueba si una variable está definida en javascript?
if //variable is defined
//do this
else
//do this
¿Cómo debo probar si una variable está definida?¿Prueba si una variable está definida en javascript?
if //variable is defined
//do this
else
//do this
if (typeof variable !== 'undefined') {
// ..
}
else
{
// ..
}
encontrar una explicación más detallada aquí:
se puede usar algo como esto
if (typeof varname != 'undefined')
{
//do this
}
else
{
//do this
}
Sólo tiene que comprobar el tipo.
if(typeof yourVar !== "undefined"){
alert("defined");
}
else{
alert("undefined");
}
Utilice el operador in
.
'myVar' in window; // for global variables only
typeof
cheques volverán cierto para una variable si,
undefined
, oLos siguientes ejemplos ilustrarán el segundo y el tercer punto.
// defined, but not initialized
var myVar;
typeof myVar; // undefined
// defined, and initialized to undefined
var myVar = undefined;
typeof myVar; // undefined
Puede usar * en la ventana * solo en el caso especial de variables globales, ya que también se convierten en propiedades del objeto global. Las variables locales no tienen dicho objeto variable accssible. Suponer que hay un objeto de ventana puede ser razonable para los navegadores, pero no necesariamente es cierto en general. – RobG
@RobG: no tiene que ser 'window' o el objeto global. Cualquier objeto puede usarse aquí en su lugar. Ha planteado un buen punto sobre las variables definidas localmente que no son accesibles aquí. Me interesaría saber si hay una manera de determinar la indefinición para las variables locales, basándome solo en el primer criterio que tengo. – Anurag
Si habla de variables y alcance, solo puede distinguir entre variables globales (ya que son propiedades del objeto global) y el resto. En una función anidada, es imposible determinar si un identificador es una variable de función local o externa porque no puede acceder a los objetos variables relacionados. La resolución de propiedad del objeto es una cosa diferente. – RobG
Utilice! == para una comparación estricta y un mejor rendimiento. –
@ AmericanYak-en * typeof * prueba el algoritmo para resolver ['=='] (http://ecma-international.org/ecma-262/5.1/#sec-11.9.3) y ['=== '] (http://ecma-international.org/ecma-262/5.1/#sec-11.9.6) es idéntico ya que ambos valores tienen el mismo Tipo (cadena), entonces ¿de dónde proviene el mejor rendimiento? – RobG
Esto falla porque '' typeof null' es 'Object' – nikjohn