У этой конкретной проблемы будет много хороших решений, но вместо этого я сконцентрируюсь на логике boolean
в образовательных целях
Вы захотите сделать это:
(a == "password") || (a == "email) || (a == "password")
Языки программирования не похожи на английский: в нем есть строгое грамматическое правило, и вместо него говорят:
"if x is 3 or 5"
в большинство языков программирования, вы должны сказать:
if x is 3 or x is 5
Точно так же, как обычно в математической записи, сказать:
"if a < b < c"
в большинство языков программирования, вы должны сказать:
if a < b and b < c
Посмотрим, что произойдет с вашим экспериментом:
a == "password" || "email"
Из-за того, что называется «приоритет оператора», это анализируется как:
(a == "password") || "email"
Теперь, начиная с a == "email"
, это, по сути, оценивается как:
false || "email"
, поэтому это выражение оценивается как "email"
.
Аналогично, с:
a == "email" || "password"
Это по сути
true || "password"
и поэтому он оценивается как true
.