#javascript #if-statement
#javascript #if-statement
Вопрос:
Допустим, у меня есть этот оператор if:
if (
username === firstname amp;amp;
password !== fakePassword amp;amp;
givenname === lastname
) {
console.log(`Hi ${firstname}`)
}
Теперь я хочу, чтобы указанное имя было обязательным, если оно длиннее 3 символов:
const givennameRequired = givenname.length > 3;
могу ли я изменить оператор if таким образом, чтобы в нем говорилось: «Если givennameRequired
переменная имеет значение true, тогда позаботьтесь об этой части»
Таким образом, консоль регистрирует два параметра или три в зависимости от допустимости givennameRequired
. Очевидно, я пытаюсь избежать использования if / else и иметь два журнала консоли
Грубым способом «sudo-code» (я знаю, что это недопустимо):
if (
username === firstname amp;amp;
password !== fakePassword amp;amp;
(
if (givennameRequired) {
givenname === lastname
} else {
return true;
}
)
) {
console.log(`Hi ${firstname}`)
}
В принципе, если длина больше трех, вычислите givenname === lastname
иначе, верните true и не беспокойтесь об этом.
Комментарии:
1. Что означает «я хочу сделать это обязательным, если [что-то, что может быть истинным, только если оно уже существует]»? Если у вас несколько вариантов использования, то наличие внешнего и внутреннего
if
вполне нормально: «попытка избежать if / else» — неправильный способ программирования: если это то, что вам нужно, то это то, что вам нужно.2. @Mike’Pomax’Camermans Я исправил
!===
, в любом случае, это был какой-то sudo. Не уверен, что вы имеете в виду под своим вопросом, можете ли вы уточнить?3.
x.length > 3
может передаваться только, еслиx
это уже реальная вещь, поэтому «требовать x, если x> 3» не имеет смысла: мы знаем , что он существует, требовать нечего: он прямо там.
Ответ №1:
Это может сделать то, что вы хотите:
if (
username === firstname amp;amp;
password !== fakePassword amp;amp;
(givenname.length <= 3 || givenname === lastname)
) {
console.log(`Hi ${firstname}`)
}
if
Условие беспокоит только для проверки givenname === lastname
, если givenname.length > 3
Комментарии:
1. При этом используется or, поэтому он будет выполняться, если длина больше трех, но все равно нужно проверить, равна ли она. Использование and здесь может привести к false, и он не будет выполняться, даже если должен.
2. Нет,
||
оператор не оценивает свой правый член, если его левый член равенtrue
.3. @cybersam Я думаю, что OP хочет добавить проверку в
givennameRequired
конец этогоif
, с каким-то другим условием.4. Мой код выполняет
givenname === lastname
тест тогда и только тогда, когдаgivenname.length > 3
. В противном случае этот тест не выполняется. Это то, что вы хотите.5. @dcp3450
givenname === lastname
вычисляется только в том случае, еслиgivenname.length <= 3
равно FALSE .givenname.length <= 3
является обратнымgivenname.length > 3
, что означает, чтоgivenname === lastname
вычисляется только в том случае, еслиgivenname.length > 3
значение TRUE . Именно то, что вы хотите, верно?
Ответ №2:
Этого можно легко достичь с помощью инструкции if
if (givenname.length > 3){
//do something
}
else {
//do something else
}
Ответ №3:
Пытаюсь соответствовать вашему синтаксису. Что-то вроде этого должно сработать. Для вашего собственного здравомыслия я бы рассмотрел возможность вложения операторов if, чтобы вы могли предоставлять более точную обратную связь пользователю.
if (username === firstname amp;amp; password !== fakePassword amp;amp; (givennamerequired == true amp;amp; givenname === lastname amp;amp; givenname.length() > 3))
) {
console.log(`Hi ${firstname}`)
}
Комментарии:
1. Если значение required равно false или длина меньше трех, круглые скобки вернут false и не будут запускать журнал. Однако он должен выполняться долго, поскольку два других равны, а заданное имя следует игнорировать.