javascript - 将多个参数控制为一个函数的最佳代码结构

标签 javascript

我想优化我的代码以将多个参数控制到一个函数中。

像这个例子:

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; 
}

这个例子的最佳实践是什么。

最佳答案

我见过很多 API 以不同的方式处理可选参数,但我通常使用以下规则(可能会有异常(exception)):

如果我必须传递很多参数,我将它们包装在一个对象中,所以

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?
    ...
  }
}

使用这种方法,可选参数没有问题,您不必检查第一个参数是否实际上是第二个参数,因为第一个参数被省略了。此外,如果您更新 API 添加或删除参数,您的代码可以轻松地向后兼容。

但是如果我的函数只接收到少于 4 个参数,我会命令它们将必需的参数放在前面,可选的放在后面:

function myFunc (a, b [,c] [,d]) {...}

顺便说一句,你的代码有一些问题:

  • 在检查它们是否为字符串之前调用 trim() 这不是一个好主意
  • 我猜你想用 ||而不是在您的支票中使用 &&。

关于javascript - 将多个参数控制为一个函数的最佳代码结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42832356/

相关文章:

javascript - 显示默认行 KnockOut.js

javascript - 如何创建 7 Angular 分量?

javascript - 在 ViewModel 之外使用计算数组来 knockout JS

javascript - 获取一个数组并将其随机化到另一个数组中

javascript - 使用大小属性设置选择框的样式?

javascript - AngularJS - 在 $event.stopPropagation 之后停止 ng-click 表达式评估

javascript - 使用 Javascript 进行自动身份验证?

javascript - 如何设置 div#a 的宽度等于 div#b

javascript - 如何使用 Intl 在 javascript 中获取月份名称列表

javascript - 追加 300.000 行或将它们打印到文件中?