En JavaScript, aucune chaîne n'est égale à null.
Peut-être vous attendiez-vous pass == nullà être vrai quand passest 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 0sont vaguement égaux, vous pourriez raisonnablement supposer cela ''et nullsont vaguement égaux. Mais ce n'est pas le cas.
Cette expression est fausse:
'' == null
Le résultat de la comparaison d'une chaîne à nullest faux. Par conséquent, pass == nulltous 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 .