使用 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)
这些并不等同,所以无所谓哪一种风格更好。
如果name
是null
并且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)
}
我想知道处理验证的控制结构更好
我试过 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)
这些并不等同,所以无所谓哪一种风格更好。
如果name
是null
并且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)
}