¿Cómo puedo verificar los valores nulos en JavaScript? Escribí el código a continuación pero no funcionó.
if (pass == null || cpass == null || email == null || cemail == null || user == null) {
alert("fill all columns");
return false;
}
¿Y cómo puedo encontrar errores en mis programas de JavaScript?
javascript
null
compare
Mahdi_Nine
fuente
fuente
null
en js deben hacerse con el operador estricto===
Respuestas:
Javascript es muy flexible con respecto a la comprobación de valores "nulos". Supongo que en realidad estás buscando cadenas vacías, en cuyo caso este código más simple funcionará:
Que comprobará para cadenas vacías (
""
),null
,undefined
,false
y los números0
yNaN
Tenga en cuenta que si está verificando específicamente los números, es un error común omitir
0
con este método, ynum !== 0
se prefiere (num !== -1
o~num
(código hacky que también verifica-1
)) las funciones que devuelven-1
, por ejemploindexOf
)fuente
!
o!!
para probarnull
o paraundefined
datos típicamente numéricos a menos que también quiera tirar valores de 0.0
...". Creo que esta respuesta es perfectamente apropiada para la pregunta, dado el contexto (lo que infiero es "nombre de usuario, contraseña, correo electrónico"), no están buscando0
valores. Sin embargo, dada la popularidad de esta pregunta y respuesta, estoy de acuerdo en que vale la pena mencionarla en la respuesta misma.Para verificar nulo ESPECÍFICAMENTE , usaría esto:
Esta prueba sólo pasar por
null
y no pasará por""
,undefined
,false
,0
, oNaN
.Además, he proporcionado verificaciones absolutas para cada valor "falso" (uno que devolvería verdadero para
!variable
).Tenga en cuenta que, para algunas de las comprobaciones absolutas, deberá implementar el uso de
absolutely equals: ===
ytypeof
.He creado un JSFiddle aquí para mostrar todas las pruebas individuales funcionando
Aquí está el resultado de cada verificación:
Como puede ver, es un poco más difícil de probar
NaN
;fuente
===
igualdad estricta? Gracias. También para la prueba de NaN puede usarisNaN(value)
eso devolverátrue
solo si la variable es igual a NaN.variable === null
que no sea del tipo "objeto"? Si no es así, ¿por qué no simplificar el cheque paravariable === null
tirar el segundo conjunto? Gracias.variable === null
lo que acabo de probar aquí en este JSFiddle . La razón por la que también usé `&& typeof variable === 'object' 'no fue solo para ilustrar el hecho interesante de que unnull
valor es typeofobject
, sino también para mantener el flujo de las otras verificaciones. Pero sí, en conclusión, puede usarlo de manera seguravariable === null
.simplemente reemplace
==
con===
en todos los lugares.==
es una comparación de igualdad suelta o abstracta===
es una estricta comparación de igualdadConsulte el artículo de MDN sobre las comparaciones de igualdad y la igualdad para obtener más detalles.
fuente
undefined
que nonull
. De lo contrario, dará lugar a una gran cantidad de comportamiento inesperado. En general, si está interesado en ambosnull
/undefined
pero no en valores falsos, use==
(uno de los pocos casos en los que debería hacerlo).undefined
no esnull
: stackoverflow.com/a/5076962/753237Operador de igualdad estricto: -
Podemos verificar nulo por
===
Solo usando
if
se evaluará como verdadero si el valor no es :
fuente
Mejora sobre la respuesta aceptada al verificar explícitamente
null
pero con una sintaxis simplificada:fuente
En primer lugar, tiene una declaración return sin un cuerpo de función. Lo más probable es que arroje un error.
¡Una forma más limpia de hacer su verificación sería simplemente usar el! operador:
fuente
puedes usar try catch finalmente
También puedes
throw
tus propios errores. Mira esto .fuente
En JavaScript, ninguna cadena es igual a
null
.Tal vez esperaba
pass == null
que fuera cierto cuando sepass
trata de una cadena vacía porque sabe que el operador de igualdad suelta==
realiza ciertos tipos de coerción de tipo.Por ejemplo, esta expresión es verdadera:
Por el contrario, el operador de igualdad estricta
===
dice que esto es falso:Teniendo en cuenta eso
''
y0
son más o menos iguales, podrías conjeturar razonablemente eso''
ynull
son más o menos iguales. Sin embargo, no lo son.Esta expresión es falsa:
El resultado de comparar cualquier cadena con
null
es falso. Por lo tanto,pass == null
y todas sus otras pruebas son siempre falsas, y el usuario nunca recibe la alerta.Para arreglar su código, compare cada valor con la cadena vacía:
Si está seguro de que
pass
es una cadena,pass == ''
también funcionará porque solo una cadena vacía es más o menos igual a la cadena vacía. Por otro lado, algunos expertos dicen que es una buena práctica usar siempre la igualdad estricta en JavaScript a menos que específicamente desee hacer la coerción de tipo que realiza el operador de igualdad suelta.Si desea saber qué pares de valores son aproximadamente iguales, consulte la tabla "Comparaciones de igualdad" en el artículo de Mozilla sobre este tema .
fuente
para verificar si está indefinido y nulo en javascript solo necesita escribir lo siguiente:
fuente
Este es un comentario sobre la solución de WebWanderer con respecto a la verificación de NaN (todavía no tengo suficiente representante para dejar un comentario formal). La solución se lee como
pero esto fallará para números racionales que se redondearían a
0
, comovariable = 0.1
. Una mejor prueba sería:fuente
parseInt
aparseFloat
(que debería haber sido obvio para mí en primer lugar). Evité usar laisNan
función porque siento que muchos desarrolladores ven funcionesisNaN
como una especie de "caja mágica" en la que entran los valores y salen los booleanos, y quería que la prueba fuera un poco más profunda. Pero sí, su prueba sugerida funcionará y está perfectamente bien para usar. Lo siento, no noté tu publicación hasta ahora.isNaN
también, puedo apoyar esa lógica. También está el método Underscore.js, que parece aún más confuso / blackbox, pero vale la pena señalar de todos modos porque se aprovechaNaN !== NaN
.Object.prototype.toString.call(variable) === '[object Number]' && variable !== +variable
En realidad, creo que puede necesitar usarlo
if (value !== null || value !== undefined)
porque si lo usaif (value)
también puede filtrar 0 o valores falsos.Considere estas dos funciones:
En mi situación, sólo necesitaba para comprobar si el valor es nulo e indefinido y que no quería para filtrar
0
ofalse
o''
valores. así que usé la segunda prueba, pero es posible que también necesites filtrarlos, lo que puede hacer que uses la primera prueba.fuente
Encontré otra forma de probar si el valor es nulo:
null
actúa comonumber
yobject
, al mismo tiempo. Comparaciónnull >= 0
onull <= 0
resultados entrue
. Comparandonull === 0
onull > 0
onull < 0
dará lugar a falsas. Pero comonull
también es un objeto, podemos detectarlo como nulo.Hice una función más compleja, la naturaleza de la bruja funcionará mejor que el tipo y se me puede decir qué tipos incluir o mantener agrupados
fuente
Hice esta función muy simple que hace maravillas:
La ruta es cualquier cadena de valores que pueda explotar. Lo uso para jQuery / cheerio y objetos y tal.
Ejemplos 1: un objeto simple como este
const testObj = {items: [{ val: 'haya' }, { val: null }, { val: 'hum!' }];};
.Pero podría ser un objeto muy grande que ni siquiera hemos hecho. Entonces lo paso por:
Por supuesto, si lo prefiere, puede usar
null
o'No value'
... lo que se adapte a sus necesidades.Por lo general, una consulta DOM o un selector jQuery puede arrojar un error si no se encuentra. Pero usando algo como:
fuente
Puede usar el módulo lodash para verificar que el valor sea nulo o indefinido
Enlace de referencia: https://lodash.com/docs/#isNil
fuente
Esto no funcionará en caso de que los valores booleanos provengan de DB para ex:
fuente
AFAIK en JAVASCRIPT cuando una variable se declara pero no tiene un valor asignado, su tipo es
undefined
. para que podamos verificar la variable incluso si se tratara deobject
mantener alguna instancia en lugar de valor .cree un método auxiliar para verificar la nulidad que devuelve
true
y úselo en su API.función auxiliar para verificar si la variable está vacía:
llamada de API excepcional try-catch:
algunos casos de prueba:
fuente
isEmpty
función se comporta exactamente igual!
. No es necesario inventar una función. Solo hazloif (!pass || !cpass || !email ...)
. (Que ya se muestra en la respuesta aceptada). Y según el comentario de WebWanderer, la parte central de esta publicación, "llamada de API excepcional try-catch", no parece ser relevante para esta pregunta. Explique su intención: ¿cuándo es útil? ¿Cómo se relaciona eso con la pregunta?Comprobación de condiciones de error:
fuente
Prueba esto:
fuente
if (variable === null)
? También alguien ya proporcionó esa respuesta el año pasado: stackoverflow.com/a/27550756/218196 .