我想优化我的代码以将多个参数控制为一个函数。
就像这个例子:
getEvaluation ( _val1, _val2, _val3, _val4) {
let val_1 = _val1.trim(),
val_2 = _val2.trim(),
val_3 = _val3.trim(),
val_4 = _val4.trim();
let validation = true;
if ( typeof val_1 !== 'string' && val_1 !== null && val_1 !== undefined && val_1.length > 0 ) {
validation = false;
}
if ( typeof val_2 !== 'string' && val_2 !== null && val_2 !== undefined && val_2.length !== 31 ) {
validation = false;
}
if ( typeof val_3 !== 'string' && val_3 instanceof date ) {
validation = false;
}
if ( typeof val_4 !== 'number' && val_4 < 1 && val_4 > 10 ) {
validation = false;
}
return validation;
}
这个例子的最佳实践是什么。
答案 0 :(得分:2)
我看过很多以不同方式处理可选参数的API,但我通常使用以下规则(可能有例外):
如果我必须传递许多参数,我将它们包装在一个对象中,所以
function funcA(a,b,c,d,e,f) {
//a lot of ifs to check each param
}
变为:
function funcA(paramObj) {
if (paramObj.a) { //is "a" populated?
...
}
}
使用这种方法,可选参数没有问题,你不必检查第一个参数是否实际上是第二个参数,因为第一个参数是ommited。此外,如果您更新API添加或删除参数,您的代码可以轻松向后兼容。
但是如果我的函数只收到少于4个参数,我命令他们先把强制性参数和后面的可选函数放在:
function myFunc (a, b [,c] [,d]) {...}
顺便说一句,您的代码存在一些问题:
trim()
不是一个好主意答案 1 :(得分:0)
我建议在函数参数中使用一个JavaScript对象,而不是传递所有这些参数