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