У JavaScript жодна рядок не дорівнює null
.
Можливо, ви очікували, pass == null
що це правда, коли pass
це порожня рядок, оскільки ви знаєте, що оператор вільної рівності ==
виконує певні види примусу типу.
Наприклад, цей вираз вірний:
'' == 0
На відміну від цього, оператор суворої рівності ===
говорить, що це помилково:
'' === 0
З огляду на , що ''
і 0
нещільно рівні, ви могли б розумно припущення , що ''
і null
нещільно рівні. Однак їх немає.
Цей вираз помилковий:
'' == null
Результат порівняння будь-якого рядка з null
помилковим. Тому pass == null
і всі ваші інші тести завжди помилкові, і користувач ніколи не отримує попередження.
Щоб виправити код, порівняйте кожне значення з порожнім рядком:
pass === ''
Якщо ви впевнені, що pass
це рядок, pass == ''
це також буде працювати, оскільки лише порожня рядок вільно дорівнює порожній рядку. З іншого боку, деякі фахівці стверджують, що добре використовувати завжди строгу рівність у JavaScript, якщо ви конкретно не хочете виконувати примус типу, який виконує оператор вільної рівності.
Якщо ви хочете знати, які пари значень нерівні, див. Таблицю «Порівняння однаковості» у статті Mozilla на цю тему .