在下面的示例中是一个典型的函数,它接受三个参数:
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);
这是正确的且唯一的方法吗?
答案 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?
}
}
这能回答您的问题吗?