Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在javascript中使用参数调用函数_Javascript_Function_Parameters_Arguments_Method Call - Fatal编程技术网

在javascript中使用参数调用函数

在javascript中使用参数调用函数,javascript,function,parameters,arguments,method-call,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, ""); 我的问题是如果我们想通

在以下示例中,一个典型函数接受三个参数:

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);
或者我们必须始终向函数传递相同数量的参数
接受,无论他们是否有数据,如下所示:

var myApp = {
  handler: function(a, b, c) {
    // actions
  }
};
cook(param1, param2, "");  -  myApp.handler(param1, param2, "");
另外,如果我们想通过第一和第三关,正确的方法是什么
参数?或者仅使用第二个或第三个参数。我无法思考
除此之外:

cook(param1, "", param3);  -  myApp.handler(param1, "", param3);
cook("", param2, "");
cook("", "", param3);
这是正确的并且是唯一的方法吗?

我们是否必须始终向函数传递相同数量的参数

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

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

cook('foo') // will console log 'foo undefined undefined'
如果我们想通过第一和第三关,正确的方法是什么 参数

这一点您是对的,尽管您通常会在这里将未定义或null值作为参数,而不是空字符串。如果您想忽略param2,但给出param3,例如

cook(param1, null, param3)

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

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

// 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”})

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

嗯。这个问题有多种解释你所问问题的方法,所以我会给你其中一种

如果您想拥有一个接受不同数量参数的函数,那么应该像这样使用es6 spread运算符

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

这是否回答了您的问题?

如果可能以更好的方式设计它,请传递一个对象或数组,而不是此对象或数组。