Comment puis-je vérifier les valeurs nulles en JavaScript? J'ai écrit le code ci-dessous mais cela n'a pas fonctionné.
if (pass == null || cpass == null || email == null || cemail == null || user == null) {
alert("fill all columns");
return false;
}
Et comment puis-je trouver des erreurs dans mes programmes JavaScript?
javascript
null
compare
Mahdi_Nine
la source
la source
null
en js doivent être effectués avec l'opérateur strict===
Réponses:
Javascript est très flexible en ce qui concerne la vérification des valeurs "nulles". Je suppose que vous recherchez en fait des chaînes vides, auquel cas ce code plus simple fonctionnera:
Qui vérifie la présence des chaînes vides (
""
),null
,undefined
,false
et les numéros0
etNaN
Veuillez noter que si vous vérifiez spécifiquement les nombres, c'est une erreur courante de manquer
0
avec cette méthode, etnum !== 0
est préférée (ounum !== -1
ou~num
(code hacky qui vérifie également-1
)) pour les fonctions qui retournent-1
, par exempleindexOf
)la source
!
ou!!
pour testernull
ouundefined
sur des données typiquement numériques à moins que vous ne souhaitiez également supprimer des valeurs de 0.0
...". Je crois que cette réponse est parfaitement appropriée à la question, étant donné le contexte (que j'infère "nom d'utilisateur, mot de passe, e-mail"), ils ne vérifient pas les0
valeurs. Compte tenu de la popularité de cette question et de sa réponse, je conviens cependant qu'il convient de le mentionner dans la réponse elle-même.Pour vérifier NUL SPÉCIFIQUEMENT, vous utiliseriez ceci:
Ce test seulement passer pour
null
et ne passera pas pour""
,undefined
,false
,0
ouNaN
.De plus, j'ai fourni des vérifications absolues pour chaque valeur "false-like" (celle qui retournerait true pour
!variable
).Notez que pour certaines des vérifications absolues, vous devrez implémenter l'utilisation de
absolutely equals: ===
ettypeof
.J'ai créé un JSFiddle ici pour montrer tous les tests individuels qui fonctionnent
Voici la sortie de chaque contrôle:
Comme vous pouvez le voir, c'est un peu plus difficile à tester
NaN
;la source
===
une égalité stricte? Merci. De plus, pour le test NaN, vous pouvez utiliserisNaN(value)
ce résultattrue
uniquement si la variable est égale à NaN.variable === null
mais n'est pas de type "objet"? S'il n'y en a pas, pourquoi ne pas simplifier le chèque envariable === null
jetant le deuxième joint? Merci.variable === null
ce que je viens de tester ici dans ce JSFiddle . La raison pour laquelle j'ai également utilisé `&& typeof variable === 'object' 'n'était pas seulement pour illustrer le fait intéressant qu'unenull
valeur est un typeofobject
, mais aussi pour suivre le flux des autres vérifications. Mais oui, en conclusion, vous êtes sûr d'utiliser simplementvariable === null
.remplacez simplement le
==
par===
dans tous les endroits.==
est une comparaison d'égalité lâche ou abstraite===
est une comparaison stricte d'égalitéVoir l'article de MDN sur les comparaisons d'égalité et la similitude pour plus de détails.
la source
undefined
que nonnull
. Sinon, cela entraînera de nombreux comportements inattendus. En général , si vous êtes intéressé à la foisnull
/undefined
mais pas les valeurs falsy, puis utilisez==
( l' un des rares cas où vous devriez le faire).undefined
n'est pasnull
: stackoverflow.com/a/5076962/753237Opérateur d'égalité stricte: -
Nous pouvons vérifier null par
===
Juste en utilisant
if
sera évalué à vrai si la valeur n'est pas :
la source
Amélioration de la réponse acceptée en vérifiant explicitement
null
mais avec une syntaxe simplifiée:la source
Tout d'abord, vous avez une instruction return sans corps de fonction. Il y a de fortes chances que cela génère une erreur.
Une façon plus propre de faire votre vérification serait d'utiliser simplement le! opérateur:
la source
vous pouvez enfin utiliser try catch
vous pouvez également
throw
vos propres erreurs. Regardez ça .la source
En JavaScript, aucune chaîne n'est égale à
null
.Peut-être vous attendiez-vous
pass == null
à être vrai quandpass
est une chaîne vide parce que vous savez que l'opérateur d'égalité lâche==
effectue certains types de coercition de type.Par exemple, cette expression est vraie:
En revanche, l'opérateur d'égalité stricte
===
dit que c'est faux:Étant donné que
''
et0
sont vaguement égaux, vous pourriez raisonnablement supposer cela''
etnull
sont vaguement égaux. Mais ce n'est pas le cas.Cette expression est fausse:
Le résultat de la comparaison d'une chaîne à
null
est faux. Par conséquent,pass == null
tous vos autres tests sont toujours faux et l'utilisateur ne reçoit jamais l'alerte.Pour corriger votre code, comparez chaque valeur à la chaîne vide:
Si vous êtes certain que
pass
s'agit d'une chaîne,pass == ''
cela fonctionnera également car seule une chaîne vide est à peu près égale à la chaîne vide. D'un autre côté, certains experts disent que c'est une bonne pratique de toujours utiliser une égalité stricte dans JavaScript, sauf si vous voulez spécifiquement faire la coercition de type que l'opérateur d'égalité lâche effectue.Si vous voulez savoir quelles paires de valeurs sont approximativement égales, consultez le tableau "Comparaisons de similitude" dans l' article de Mozilla sur ce sujet .
la source
pour vérifier non défini et null en javascript, il vous suffit d'écrire ce qui suit:
la source
Ceci est un commentaire sur la solution de WebWanderer concernant la vérification de NaN (je n'ai pas encore assez de représentant pour laisser un commentaire formel). La solution se lit comme suit:
mais cela échouera pour les nombres rationnels qui arrondiraient à
0
, tels quevariable = 0.1
. Un meilleur test serait:la source
parseInt
àparseFloat
(ce qui aurait dû être évident pour moi en premier lieu). J'ai évité d'utiliser laisNan
fonction parce que j'ai l'impression que de nombreux développeurs voient des fonctions telles qu'uneisNaN
sorte de "boîte magique" dans laquelle les valeurs entrent et les booléens sortent, et je voulais que le test soit un peu plus approfondi. Mais oui, votre test suggéré fonctionnera et est parfaitement adapté à l'utilisation. Désolé, je n'ai pas remarqué votre message jusqu'à présent.isNaN
, je peux me mettre derrière cette logique. Il y a aussi la méthode Underscore.js, qui semble encore plus déroutante / blackbox, mais qui vaut quand même la peine d'être notée car elle en profiteNaN !== NaN
.Object.prototype.toString.call(variable) === '[object Number]' && variable !== +variable
En fait, je pense que vous devrez peut-être utiliser
if (value !== null || value !== undefined)
parce que si vous utilisezif (value)
vous pouvez également filtrer 0 ou de fausses valeurs.Considérez ces deux fonctions:
Dans ma situation, j'avais juste besoin de vérifier si la valeur était nulle et non définie et je ne voulais pas filtrer les valeurs
0
oufalse
ou''
. J'ai donc utilisé le deuxième test, mais vous devrez peut-être également les filtrer, ce qui pourrait vous obliger à utiliser le premier test.la source
J'ai trouvé une autre façon de tester si la valeur est nulle:
null
agit comme unnumber
etobject
en même temps. Comparaisonnull >= 0
ounull <= 0
résultatstrue
. Comparernull === 0
ounull > 0
ounull < 0
entraînera un faux. Mais commenull
c'est aussi un objet, nous pouvons le détecter comme nul.J'ai fait une fonction plus complexe, la nature de la sorcière fera mieux que le type et je peux dire quels types inclure ou garder groupés
la source
J'ai fait cette fonction très simple qui fait des merveilles:
L'itinéraire est la chaîne de valeurs qui peut exploser. Je l'utilise pour jQuery / cheerio et des objets et autres.
Exemples 1: un objet simple comme celui-ci
const testObj = {items: [{ val: 'haya' }, { val: null }, { val: 'hum!' }];};
.Mais ce pourrait être un très grand objet que nous n'avons même pas fabriqué. Je passe donc par:
Bien sûr, si vous préférez, vous pouvez utiliser
null
ou'No value'
... ce qui convient à vos besoins.Habituellement, une requête DOM ou un sélecteur jQuery peut générer une erreur s'il n'est pas trouvé. Mais en utilisant quelque chose comme:
la source
Vous pouvez utiliser le module lodash pour vérifier que la valeur est nulle ou non définie
Lien de référence: https://lodash.com/docs/#isNil
la source
Cela ne fonctionnera pas en cas de valeurs booléennes provenant de DB par exemple:
la source
AFAIK dans JAVASCRIPT lorsqu'une variable est déclarée mais n'a pas de valeur assignée, son type est
undefined
. afin que nous puissions vérifier la variable même si ce serait uneobject
détention d'une instance à la place de la valeur .créer une méthode d'assistance pour vérifier la nullité qui retourne
true
et l'utiliser dans votre API.fonction d'assistance pour vérifier si la variable est vide:
essayez d'appeler un appel d'API exceptionnel:
quelques cas de test:
la source
isEmpty
fonction se comporte exactement comme!
. Pas besoin d'inventer une fonction. Faites-leif (!pass || !cpass || !email ...)
. (Ce qui est déjà indiqué dans la réponse acceptée.) Et selon le commentaire de WebWanderer, la partie centrale de cet article, "essayez d'appeler un appel API exceptionnel", ne semble pas être pertinente pour cette question. Veuillez expliquer votre intention - quand est-ce utile? Quel est le rapport avec la question?Vérification des conditions d'erreur:
la source
Essaye ça:
la source
if (variable === null)
? Quelqu'un a également fourni cette réponse l'année dernière: stackoverflow.com/a/27550756/218196 .