使用 IF 控制结构在 JS 中进行验证的正确方法是什么

What is the correct way to make validations in JS, using the IF control structure

我想知道处理验证的控制结构更好

我试过 if else if, and if -> return... if -> return

哪个更好更易懂?

if(user.name == null) {
  errorMessage ('insert name')
} else if (user.age == null) {
  errorMessage('Insert age')
} else {
  insertUser(user)
}

if(user.name == null) {
  errorMessage ('insert name')
  return
}

if (user.age == null) {
  errorMessage('Insert age')
  return
} 

insertUser(user)

这些并不等同,所以无所谓哪一种风格更好。

如果namenull并且age也是null如果你使用第一个代码块会发生什么?答:你只会设置名字,年龄会保持null

所以你应该使用第二块。

此外,您通常应该考虑使用 if (!a) 之类的东西,而不是检查 if (a == null)。这不仅可以处理 null 值,还可以处理一些更假的值(例如 undefined'' 等)。

在性能方面,它们是相同的。

关于代码的可读性,我更喜欢后者

为了维护,以后可能需要一个所有错误的列表,这样会更容易实现。

怎么样:

try {
    check(user.name, 'insert name');
    check(user.age, 'insert age');
    ...
    insertUser(user);
} catch(e) {
    // handle e
}

const check = (value, message) => {
   if (!value) {
       throw `${message}`;
   }
};

更好的方法是先收集所有错误。然后检查是否有错误,如果没有发现错误,最后插入一个用户。


const errors = ['name', 'age'].forEach( field => {
 if(user[field] === null) {
  return `${field} is required`
 }
})

if (errors.length === 0) {
 insertUser(user)
} else {
 showErrors(errors)
}