In JavaScript, nessuna stringa è uguale a null.
Forse ti aspettavi pass == nulldi essere vero quando passè una stringa vuota perché sei consapevole che l'operatore di uguaglianza libera ==esegue determinati tipi di coercizione di tipo.
Ad esempio, questa espressione è vera:
'' == 0
Al contrario, l'operatore di uguaglianza rigorosa ===afferma che questo è falso:
'' === 0
Dato che ''e 0sono vagamente uguali, potresti ragionevolmente congetturarlo ''e nullsono vagamente uguali. Tuttavia, non lo sono.
Questa espressione è falsa:
'' == null
Il risultato del confronto di qualsiasi stringa con nullè falso. Pertanto, pass == nulle tutti gli altri test sono sempre falsi e l'utente non riceve mai l'avviso.
Per correggere il codice, confronta ogni valore con la stringa vuota:
pass === ''
Se sei sicuro che passsia una stringa, pass == ''funzionerà anche perché solo una stringa vuota è vagamente uguale alla stringa vuota. D'altra parte, alcuni esperti affermano che è una buona pratica usare sempre la rigorosa uguaglianza in JavaScript a meno che non si desideri fare specificamente la coercizione del tipo eseguita dall'operatore di uguaglianza libera.
Se vuoi sapere quali coppie di valori sono vagamente uguali, consulta la tabella "Confronti di identità" nell'articolo di Mozilla su questo argomento .