error - validar variable no definida javascript
Cómo establecer una var de JavaScript como indefinido (6)
Solución
Para establecer confiablemente una variable boo
a undefined
, use una función con una expresión de return
vacía:
boo = (function () { return; })();
Después de ejecutar esta línea de código, typeof(boo)
evalúa como ''undefined''
, independientemente de si la propiedad global undefined
se ha establecido o no en otro valor. Por ejemplo:
undefined = ''hello'';
var boo = 1;
console.log(boo); // outputs ''1''
boo = (function () { return; })();
console.log(boo); // outputs ''undefined''
console.log(undefined); // outputs ''hello''
EDITAR ¡ Pero también vea la solución más simple de @ Colin!
Referencia
Este comportamiento es estándar desde ECMAScript 1. La especificación relevante establece en parte:
Sintaxis
return
[no LineTerminator here] Expresión ;Semántica
Una declaración de
return
hace que una función cese la ejecución y devuelva un valor a la persona que llama. Si se omite Expresión , el valor de retornoundefined
estáundefined
.
Para ver las especificaciones originales, consulte:
Apéndice
Para completar, he adjuntado un breve resumen de enfoques alternativos a este problema, junto con objeciones a estos enfoques, basados en las respuestas y los comentarios de otros respondedores.
1. Asignar undefined
a boo
boo = undefined; // not recommended
Aunque es más simple asignar undefined
a boo
directamente, undefined
no es una palabra reservada y podría reemplazarse por un valor arbitrario, como un número o cadena.
2. Eliminar boo
delete boo; // not recommended
La eliminación de boo
elimina por completo la definición de boo
, en lugar de asignarle el valor undefined
, y solo funciona si boo
es una propiedad global.
Dado:
console.log(boo); this outputs undefined
Dado:
var boo = 1;
console.log(boo); this outputs 1
Después de definir boo y establecer en 1, ¿cómo puedo restablecer boo, para que console.log produzca indefinido?
Gracias
Esto funciona en Chrome JavaScript Console:
delete(boo)
Simplemente puede asignar una variable al valor de indefinido:
boo = undefined;
Alternativamente, puede usar el operador de eliminar para eliminar la variable:
delete boo;
Use el operador void
. Evaluará su expresión y luego regresará undefined
. Es idiomático usar void 0
para asignar una variable a undefined
var boo = 1; // boo is 1
boo = void 0; // boo is now undefined
Obtenga más información aquí: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/void
delete boo
No use var boo = undefined
. undefined es solo una variable y si alguien establece undefined = "hello"
entonces recibirás hola en todas partes :)
EDITAR:
null no era lo mismo que undefined. eliminado ese bit.
var boo = 1;
console.log(boo); // prints 1
boo = undefined;
console.log(boo); // now undefined