In JavaScript, nessuna stringa è uguale a null
.
Forse ti aspettavi pass == null
di 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 0
sono vagamente uguali, potresti ragionevolmente congetturarlo ''
e null
sono vagamente uguali. Tuttavia, non lo sono.
Questa espressione è falsa:
'' == null
Il risultato del confronto di qualsiasi stringa con null
è falso. Pertanto, pass == null
e 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 pass
sia 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 .