En JavaScript, aucune chaîne n'est égale à null
.
Peut-être vous attendiez-vous pass == null
à être vrai quand pass
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:
'' == 0
En revanche, l'opérateur d'égalité stricte ===
dit que c'est faux:
'' === 0
Étant donné que ''
et 0
sont vaguement égaux, vous pourriez raisonnablement supposer cela ''
et null
sont vaguement égaux. Mais ce n'est pas le cas.
Cette expression est fausse:
'' == null
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:
pass === ''
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 .