Javascript函数参数检查

时间:2016-10-12 20:10:42

标签: javascript json function

我有一个带有4个参数的函数来构建json请求。我需要检查'undefined'/空值

的参数
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
    };

如何检查更优雅?

3 个答案:

答案 0 :(得分:1)

我建议迭代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位,而只是创建所有参数的数组,并迭代该数组。

请注意,除非您将完全形成的查询参数作为参数传递 - 完成分隔符 - 这可能实际上不是开箱即用的。我不确定实际传递的参数是什么样的,所以我无法肯定地说。

答案 1 :(得分:0)

出于您的目的,您可以这样做:

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

或者使用ES6:

&#13;
&#13;
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', '');
&#13;
&#13;
&#13;

答案 2 :(得分:0)

如果函数有值,你可以使用Array.prototype.forEach添加函数的每个参数...而且,每个正式参数(param1,param1等)都具有相同的名称......它们应该是唯一的!

&#13;
&#13;
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'));
&#13;
&#13;
&#13;