variable validar vacia una saber not evaluar esta error comprobar javascript variables undefined

validar - Cómo verificar una variable no definida en JavaScript



validar undefined jquery (13)

Quería comprobar si la variable está definida o no. Por ejemplo, lo siguiente arroja un error no definido.

alert( x );

¿Cómo puedo detectar este error?


A menudo he hecho

function doSomething(variable) { var undef; if(variable === undef) { alert(''Hey moron, define this bad boy.''); } }


A menudo uso la forma más sencilla:

var variable; if (variable === undefined){ console.log(''Variable is undefined''); } else { console.log(''Variable is defined''); }

EDITAR:

Sin inicializar la variable, se lanzará la excepción "Uncaught ReferenceError: la variable no está definida ..."


El error te dice que x ni siquiera existe! No se ha declarado , lo que es diferente a que se le asigne un valor.

var x; // declaration x = 2; // assignment

Si declaraste x , no obtendrías un error. Obtendría una alerta que dice undefined porque x 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 recibió inicialmente.

if(typeof x !== "undefined") { alert(x); }

Esto es verificar el tipo del valor almacenado en x . Solo se devolverá undefined cuando x no se haya declarado O si se ha declarado y aún no se ha asignado.


El operador void devuelve undefined para cualquier argumento / expresión que se le pase. para que puedas probar el resultado (en realidad, algunos minificadores cambian tu código de undefined a void 0 para guardar un par de caracteres)

Por ejemplo:

void 0 // undefined if (variable === void 0) { // variable is undefined }


En JavaScript, null es un objeto. Hay otro valor para las cosas que no existen, undefined . El DOM devuelve un null para casi todos los casos en los que no encuentra alguna estructura en el documento, pero en el propio JavaScript no undefined es el valor utilizado.

Segundo, no, no hay un equivalente directo. Si realmente desea verificar específicamente para null , haga:

if (yourvar === null) // Does not execute if yourvar is `undefined`

Si desea verificar si existe una variable, eso solo se puede hacer con try / catch , ya que typeof tratará una variable no declarada y una variable declarada con el valor de undefined como equivalente.

Pero, para verificar si una variable está declarada y no está undefined :

if (typeof yourvar !== ''undefined'') // Any scope

Si sabe que la variable existe y desea verificar si hay algún valor almacenado en ella:

if (yourvar !== undefined)

Si desea saber si un miembro existe de manera independiente pero no le importa cuál es su valor:

if (''membername'' in object) // With inheritance if (object.hasOwnProperty(''membername'')) // Without inheritance

Si quieres saber si una variable es truthy :

if (yourvar)

Source


La única manera de probar realmente si una variable undefined está undefined es hacer lo siguiente. Recuerda, undefined es un objeto en JavaScript.

if (typeof someVar === ''undefined'') { // Your variable is undefined }

Algunas de las otras soluciones en este hilo lo llevarán a creer que una variable no está definida aunque se haya definido (con un valor de NULL o 0, por ejemplo).


La respuesta aceptada es correcta. Solo quería añadir una opción más. También puedes usar el bloque try ... catch para manejar esta situación. Un ejemplo extraño:

var a; try { a = b + 1; // throws ReferenceError if b is not defined } catch (e) { a = 1; // apply some default behavior in case of error } finally { a = a || 0; // normalize the result in any case }

Tenga en cuenta el bloque catch , que es un poco desordenado, ya que crea un ámbito de nivel de bloque. Y, por supuesto, el ejemplo está extremadamente simplificado para responder a la pregunta, no cubre las mejores prácticas en el manejo de errores;).


Otra posible "solución" es usar el objeto de window . Evita el problema de error de referencia cuando se encuentra en un navegador.

if (window.x) { alert(''x exists and is truthy''); } else { alert(''x does not exist, or exists and is falsy''); }


Podemos comprobar undefined siguiente manera

var x; if (x === undefined) { alert("x is undefined"); } else { alert("x is defined"); }


Técnicamente, la solución adecuada es (creo):

typeof x === "undefined"

A veces se puede hacer perezoso y usar

x == null

pero eso permite que tanto una variable indefinida x como una variable x que contiene null devuelvan verdadero.


También puede utilizar el operador condicional ternario:

var a = "hallo world"; var a = !a ? document.write("i dont know ''a''") : document.write("a = " + a);

//var a = "hallo world"; var a = !a ? document.write("i dont know ''a''") : document.write("a = " + a);


Una versión aún más fácil y abreviada sería:

if (!x) { //Undefined }

O

if (typeof x !== "undefined") { //Do something since x is defined. }


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 una verificación del valor para asegurarme de que la variable no solo existe, sino que también se le ha asignado un valor. La segunda condición verifica si la variable también ha sido instanciada, porque si la variable se ha definido pero no se ha creado una instancia (vea el ejemplo a continuación), aún generará un error si intenta hacer referencia al valor en su código.

No instanciado - var my_variable; Instanciado - var my_variable = "";

function varExists(el) { if ( typeof el !== "undefined" && typeof el.val() !== "undefined" ) { return true; } else { return false; } }

Luego puede usar una declaración condicional para probar que la variable se ha definido y se ha creado una instancia así ...

if ( varExists(variable_name) ) { // checks that it DOES exist }

o para probar que no ha sido definido e instanciado uso ...

if( !varExists(variable_name) ) { // checks that it DOESN''T exist }