Порядок выполнения последовательных операторов if в javascript - PullRequest
0 голосов
/ 21 февраля 2019

У меня есть пара операторов if для проверки.

Проблема сейчас в том, что порядок проверки не такой, как я ожидал.

Например, я хочу проверить, если поле имени пустое, и если оно пустое, проверить, если оно содержит от 2 до 30 символов.Но когда я проверяю его, если я оставляю имя файла пустым, сначала выдается ошибка «Имя должно быть от 2 до 30 символов».Кажется, он перепрыгнул через первое выражение if.

Итак, почему это так?Почему это не выполняется в порядке

  if (Validator.isEmpty(data.name)) {
    errors.name = "Name field is required";
  }

if (!Validator.isLength(data.name, { min: 2, max: 30 })) {
    errors.name = "Name must be between 2 and 30 characters";
  }



 if (Validator.isEmpty(data.email)) {
    errors.email = "Email field is required";
  }

  if (!Validator.isEmail(data.email)) {
    errors.email = "Email is invalid";
  }

Ответы [ 2 ]

0 голосов
/ 21 февраля 2019

Посмотрите на 2 фрагмента и посмотрите на разницу.Если вы просто используете if (true), все будут выполняться.Чтобы выполнить только одно выполнение, используйте if else ().

if (true) {
  console.log("First statement is true!");
}
if (true) {
  console.log("Second statement is true!");
}
if (true) {
  console.log("Third statement is true!");
}

if (true) {
  console.log("First statement is true!");
}
else if (true) {
  console.log("Second statement is true!");
}
else if (true) {
  console.log("Third statement is true!");
}

В вашем случае они оба выполнялись, но поскольку второй, выполненный после первого, errors.name имел значение из второго, если, но непервый.

0 голосов
/ 21 февраля 2019

Он выполняется по порядку, но тогда ваш второй if просто перезаписывает сообщение из первого if.Вам необходимо добавить код для завершения обработки, если первый, если true, или использовать else if для второго.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...