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