使用JavaScript中的参数调用函数

时间:2018-08-15 21:27:12

标签: javascript function parameters arguments method-call

在下面的示例中是一个典型的函数,它接受三个参数:

function cook(a, b, c) {
  // cooking stuff..
  return[results];
};

或作为属性函数,如下所示:

var myApp = {
  handler: function(a, b, c) {
    // actions
  }
};

我的问题是,如果我们想通过,如何正确调用此函数
只有两个参数,甚至只有一个:
像这样:

cook(param1, param2);  -  myApp.handler(param1, param2);

或者我们必须始终向函数传递相同数量的参数
接受,不管他们是否有数据,就像这样:

cook(param1, param2, "");  -  myApp.handler(param1, param2, "");

另外,如果我们想通过第一个和第三个,什么是正确的方法
参数?或仅第二或第三参数。我想不到
除此之外的东西:

cook(param1, "", param3);  -  myApp.handler(param1, "", param3);
cook("", param2, "");
cook("", "", param3);

这是正确的且唯一的方法吗?

3 个答案:

答案 0 :(得分:0)

函数是否必须始终传递相同数量的参数?

不,您不必将所有参数都传递给函数,未设置的参数将是未定义的

function cook(a, b, c) {
  console.log(a, b, c)
};

cook('foo') // will console log 'foo undefined undefined'

如果我们想通过第一和第三次考试,正确的方法是什么 参数?

您是正确的,尽管您通常会在此处提供未定义或空值作为参数,而不是空字符串。如果您想忽略param2但以param3为例

cook(param1, null, param3)

然后,您可以使用更标准的null或undefined值测试函数中是否正确设置了所有参数

答案 1 :(得分:0)

描述函数的最佳方法是将对象用作参数

// function definition
function cook(object) {
    //do stuff
    return object.a + " " + object.b + " " + object.c;
}


parameters1 = {a:"paramA", b:"paramB",c:"paramC"}
cook(parameters1) // returns paramA paramB paramC

如果您在函数中测试这些参数以处理a,b或c可能为null或未定义的情况,则可以执行

cook({a:"paramAonly"})

cook({a:"paramA", b:"paramB"})

答案 2 :(得分:0)

“我的问题是,如果我们想通过,如何正确调用此函数 只有两个参数,甚至只有一个“

好的。这个问题有多种方法可以解释您的要求,因此我将为您提供其中一种方法。

如果您想要一个具有可变数量参数的函数,则应使用es6扩展运算符

function (...args) { // the ... is the spread operator
  return args
}

现在,如果要始终返回参数中的第一项,请执行以下操作:

function (...args) {
     return args[0] 
}

最后,如果您想做一些更灵活的事情,则可以提供以下方法:

function (... args) {
  if(args.length === 3) {
     return // you get the point?
   }
}

这能回答您的问题吗?