Javascript函数参数检查

Javascript function parameters checking

本文关键字:检查 参数 函数 Javascript      更新时间:2023-09-26

我有一个函数,有4个参数用于构建json请求。我需要检查参数"未定义"/空值

function funName(param1, param2, param3, param4) {
       if (param1 !== '' && param2 !== '' && param3 !== '' && param4 !== '') {
          url = https://example.com/api/posts.json?' + param1 + param2 + param3 + param4; 
       }
       else if {
       if (param1 == '' && param2 !== '' && param3 !== '' && param4 !== '') {
          url = https://example.com/api/posts.json?' + param2 + param3 + param4;
       }
       // code
    };

如何检查更优雅?

我建议对arguments对象进行迭代:

funName(param1, param1, param1, param1) {
    url = 'https://example.com/api/posts.json?';
    var i;
    for (i=0; i<arguments.length; i++) {
        if (arguments[i] && arguments[i] !== '') {
            url += arguments[i];
        }
    }
    // code
}

这段代码可以处理不确定数量的参数。如果您对传入的参数数量有信心,您可以省略arguments位,而只是创建一个包含所有参数的数组,并遍历该数组。

请注意,除非您将完全格式化的查询参数作为参数传递——并使用分隔符——否则这实际上可能无法开箱即用。我不确定实际传递的参数是什么样子的,所以我不能肯定。

您可以这样做:

function funName(param1, param2, param3, param4) {
   var url = 'https://example.com/api/posts.json?' + 
             (param1 || '') + (param2 || '') + (param3 || '') + (param4 || '');
   // rest of your code.
}

或使用ES6:

function funName(/* params */) {
   var url = 'https://example.com/api/posts.json?' + 
             [...arguments].filter(p => p).join('');
   // rest of your code.
   console.log(url);
}
funName('a=1', '&b=2', '');

您可以使用Array.prototype.forEach来添加函数的每个参数,如果它有一个值…而且,每个形式参数(param1, param1等)都有相同的名称…它们应该是独一无二的!

function funName(param1, param2, param3, param4) {
  var url = 'https://example.com/api/posts.json?';
  Array.prototype.forEach.call(arguments,function(argumentItem) {
    if (argumentItem) {
      url += argumentItem;
    }
  });
  return url;
}
console.log(funName('', 'a', 'n', 'c'));