В JavaScript ни одна строка не равна null
.
Возможно, вы ожидали, что pass == null
будет истиной, когда pass
- пустая строка, потому что вы знаете, что оператор свободного равенства ==
выполняет определенные виды приведения типов.
Например, это выражение истинно:
'' == 0
Напротив, оператор строгого равенства ===
говорит, что это неверно:
'' === 0
Учитывая, что ''
и 0
слабо равны, вы можете разумно предположить, что ''
и null
слабо равны. Однако это не так.
Это выражение ложно:
'' == null
Результат сравнения любой строки с null
равен false. Поэтому pass == null
и все остальные ваши тесты всегда ложны, и пользователь никогда не получит предупреждение.
Чтобы исправить ваш код, сравните каждое значение с пустой строкой:
pass === ''
Если вы уверены, что pass
является строкой, pass == ''
также будет работать, потому что только пустая строка свободно равна пустой строке. С другой стороны, некоторые эксперты говорят, что это хорошая практика - всегда использовать строгое равенство в JavaScript, если вы специально не хотите выполнять приведение типов, которое выполняет оператор свободного равенства.
Если вы хотите узнать, какие пары значений слабо равны, см. Таблицу «Сравнения одинаковости» в статье Mozilla на эту тему .