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

问题描述 投票:0回答:2

我有几个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";
  }
javascript if-statement
2个回答
2
投票

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


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的值是第二个但不是第一个。

© www.soinside.com 2019 - 2024. All rights reserved.