javascript中连续if语句的执行顺序

时间:2019-02-21 01:56:56

标签: javascript if-statement

我有几个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 :(得分:2)

它确实按顺序执行,但是第二个if只是覆盖了第一个if的消息。如果第一个条件为true,则需要添加代码以结束处理,或者第二个条件使用else if

答案 1 :(得分:0)

查看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的值是第二个(如果不是第一个)。