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