javascript - validar - ¿Cómo determinar si la variable es ''indefinida'' o ''nula''?
variable null javascript (25)
Acabo de tener este problema, es decir, comprobar si un objeto es nulo.
Simplemente uso esto:
if (object) { Somecode}
es decir
if (document.getElementById("enterJob"))
document.getElementById("enterJob").className += '' current'';
¿Cómo puedo determinar si la variable es undefined
o null
? Mi código es el siguiente:
var EmpName = $("div#esd-names div#name").attr(''class'');
if(EmpName == ''undefined''){
//DO SOMETHING
};
<div id="esd-names">
<div id="name"></div>
</div>
Pero si hago esto, el intérprete de JavaScript detiene la ejecución.
Combinando las respuestas anteriores, parece que la respuesta más completa sería:
if( typeof variable === ''undefined'' || variable === null ){
// Do stuff
}
Esto debería funcionar para cualquier variable que no esté declarada o declarada y explícitamente establecida en nula o indefinida. La expresión booleana debe evaluar a falso para cualquier variable declarada que tenga un valor real no nulo.
Con la solución a continuación:
const getType = (val) => typeof val === ''undefined'' || !val ? null : typeof val;
const isDeepEqual = (a, b) => getType(a) === getType(b);
console.log(isDeepEqual(1, 1)); // true
console.log(isDeepEqual(null, null)); // true
console.log(isDeepEqual([], [])); // true
console.log(isDeepEqual(1, "1")); // false
etc...
Soy capaz de verificar lo siguiente:
- nulo
- indefinido
- Yaya
- vacío
- cuerda ("")
- 0
- falso
Dado que está utilizando jQuery , puede determinar si una variable no está definida o si su valor es nulo utilizando una sola función.
var s; // undefined
jQuery.isEmptyObject(s); // will return true;
s = null; // defined as null
jQuery.isEmptyObject(s); // will return true;
// usage
if(jQuery.isEmptyObject(s)){
alert(''Either variable: s is undefined or its value is null'');
}else{
alert(''variable: s has value '' + s);
}
s = ''something''; // defined with some value
jQuery.isEmptyObject(s); // will return false;
Ejecuto esta prueba en la consola de Chrome, usando (void 0) puedes verificar indefinido
var c;
undefined
if(c === void 0)alert();
// output = undefined
var c = 1;
// output = undefined
if(c === void 0)alert();
// output = undefined
// check c value c
// output = 1
if(c === void 0)alert();
// output = undefined
c = undefined;
// output = undefined
if(c === void 0)alert();
// output = undefined
En algunas circunstancias es posible cambiar el valor de undefined
. Si bien estos son generalmente raros, a veces puede ser mejor evitar el uso real del valor undefined
.
Como resultado, y debido a que es más rápido de escribir, me he acostumbrado a usar un acceso directo para undefined
que es mirar el primer valor de una matriz vacía. Se garantiza que este valor es el valor primitivo undefined
, y se puede acceder con [][0]
.
Esta comprobación funcionará para buscar tanto undefined
como null
.
Aquí hay un ejemplo:
(function(undefined){
var foo = { baz: null };
console.log(foo.bar === undefined); //false
console.log(foo.bar == [][0]); //true
console.log(foo.baz == [][0]); //true
}(50))
Esta es una pregunta muy antigua, pero sigo pensando que la mejor forma de probar estas 2 condiciones es convertir el valor en cadena:
var EmpName = $("div#esd-names div#name").attr(''class'');
// Undefined check
if (Object.prototype.toString.call(EmpName) === ''[object Undefined]''){
// do something with your code
}
// Nullcheck
if (Object.prototype.toString.call(EmpName) === ''[object Null]''){
// do something with your code
}
He venido a escribir mi propia función para esto ... javascript es raro
Utilizable en cualquier cosa, literalmente. (Tenga en cuenta que esto también comprueba si la variable contiene valores utilizables. Pero como esta información también suele ser necesaria, creo que vale la pena publicarla). Por favor considere dejar una nota.
function empty(v) {
let type = typeof v;
if(type === ''undefined'') {
return true;
}
if(type=== ''boolean'') {
return !v;
}
if(v === null) {
return true;
}
if(v === undefined) {
return true;
}
if(v instanceof Array) {
if(v.length < 1) {
return true;
}
}
else if(type === ''string'') {
if(v.length < 1) {
return true;
}
if(v===''0'') {
return true;
}
}
else if(type === ''object'') {
if(Object.keys(v).length < 1) {
return true;
}
}
else if(type === ''number'') {
if(v===0) {
return true;
}
}
return false;
}
Compatible con mecanografía.
editar. esta función debe hacer exactamente lo mismo que la función empty()
PHP (consulte RETURN VALUES
)
Considera undefined
, null
, false
, 0
, 0.0
, "0"
{}
, []
como vacío.
"0.0"
, NaN
, " "
, true
se consideran no vacíos.
La forma estándar de capturar null
e undefined
simultáneamente es esta:
if (variable == null) {
// do something
}
--que es 100% equivalente a lo más explícito pero menos conciso:
if (variable === undefined || variable === null) {
// do something
}
Cuando se escribe JS profesional, se da por sentado que se entiende la igualdad de tipos y el comportamiento de ==
vs ===
. Por lo tanto usamos ==
y solo comparamos con null
.
Editar de nuevo
Los comentarios que sugieren el uso de typeof
son simplemente incorrectos. Sí, mi solución anterior causará un error de referencia si la variable no existe. Ésto es una cosa buena. Este ReferenceError es deseable: lo ayudará a encontrar sus errores y corregirlos antes de enviar su código, al igual que los errores del compilador en otros idiomas.
No debe tener ninguna referencia a variables no declaradas en su código.
La función jQuery attr()
devuelve una cadena en blanco o el valor real (y nunca null
o undefined
). La única vez que se devuelve undefined
es cuando su selector no devolvió ningún elemento.
Así que es posible que desee probar contra una cadena en blanco. Alternativamente, como las cadenas en blanco, nulas e indefinidas son falsas, puedes hacer esto:
if (!EmpName) { //do something }
La llamada a typeof null devuelve un valor de "objeto", ya que el valor especial null se considera una referencia de objeto vacía. Safari a través de la versión 5 y Chrome a través de la versión 7 tienen una peculiaridad en que llamar a typeof en una expresión regular devuelve "función", mientras que todos los demás navegadores devuelven "objeto".
Mejor manera:
if(typeof variable===''undefined'' || variable===null) {
/* do your stuff */
}
Para probar si una variable es nula o no definida, uso el siguiente código.
if(sVal === '''' || sVal === null ||typeof sVal === ''undefined''){
console.log(''variable is undefined or null'');
}
Puede verificar si el valor es indefinido o nulo simplemente usando typeof:
if(typeof value == ''undefined''){
Puedes comprobarlo por este método.
if([''object'',''undefined''].indexOf(typeof(variable)) != -1){
console.log("variable is null or undefined.");
}
Puedes usar las cualidades del operador de igualdad abstracta para hacer esto:
if (variable == null){
// your code here.
}
Debido a que null == undefined
es verdadero, el código anterior detectará tanto null
como undefined
.
Si la variable que desea verificar es global, haga
if (window.yourVarName) {
// Your code here
}
Esta forma de verificar no generará un error incluso si la variable yourVarName
no existe.
Ejemplo: quiero saber si mi navegador es compatible con la API de historial
if (window.history) {
history.back();
}
Cómo funciona esto:
window
es un objeto que contiene todas las variables globales como sus propiedades, y en JavaScript es legal intentar acceder a una propiedad de objeto no existente. Si el history
no existe, entonces window.history
devuelve undefined
. undefined
es falsey, por lo que el código en un bloque if(undefined){}
no se ejecutará.
Veo que la publicación original estaba usando JQuery. Así que estoy agregando lo que he usado en el pasado a través de JQuery. Por lo general, cuando realizo una verificación de este tipo, no necesariamente estoy comprobando que el valor sea nulo o no definido solo para ese propósito. Más como "Es el valor allí, así que puedo realizar acciones en él". Así que para eso uso lo siguiente. No he probado todos los tipos, pero sé que funciona tanto para nulos como para no definidos. Además, los objetos y las matrices (la versión vacía de ellos devolverá verdadero). Además, por supuesto, si la variable no existe, obtendrás una excepción, pero honestamente trato de evitar eso a toda costa. Así que estoy de acuerdo con Aerovistae. Quiero saber sobre esto en mi código y no quiero saltearlo.
if ($.trim(value) != '''') {
//Do Something
}
elemento de comprobación jQuery no nulo
var dvElement = $(''#dvElement'');
if (dvElement.length > 0) {
//do something
}
else{
//else do something else
}
if(x==null)
es una mala idea en javascript, juzgar con "=="
puede causar una coacción inesperada y no puede leerse con coffee-script, nunca use "==" o "! =" para juzgar !
if(x)
será mejor. pero tenga cuidado con 0 y "" , se tratará como falso , no es igual el método con "!= null"
.
(null == undefined) // true
(null === undefined) // false
Porque === comprueba tanto el tipo como el valor. El tipo de ambos es diferente pero el valor es el mismo.
if (typeof EmpName != ''undefined'' && EmpName) {
se evaluará como verdadero si el valor no es:
nulo
indefinido
Yaya
cuerda vacía ("")
0
falso
if (variable == null) {
// Do stuff, will only match null or undefined, this won''t match false
}
var i;
if(i === null || typeof i === ''undefined''){
console.log(i,''i is undefined or null'')
}else{
console.log(i,''i has some value'')
}
var x;
if (x === undefined) {
alert ("only declared, but not defined.")
};
if (typeof y === "undefined") {
alert ("not even declared.")
};
Solo puede usar el segundo: ya que verificará tanto la definición como la declaración