Javascript 如何将不同数量的参数传递给函数,而不是接受不同数量的参数?
我知道您可以使用普通Javascript对象来接受不同数量的参数,如下所示:Javascript 如何将不同数量的参数传递给函数,而不是接受不同数量的参数?,javascript,google-apps-script,Javascript,Google Apps Script,我知道您可以使用普通Javascript对象来接受不同数量的参数,如下所示: function f(params) { // do something with params.param1 // do something with params.param2 // etc... } function t() { f({param1: "a", param2: 22, param3: [1,2,3]}); // 3 parameters f({param1: 'st'});
function f(params) {
// do something with params.param1
// do something with params.param2
// etc...
}
function t() {
f({param1: "a", param2: 22, param3: [1,2,3]}); // 3 parameters
f({param1: 'st'}); // 1 parameter
}
但是,如何编写一个调用另一个函数并传递可接受数量的参数的函数,而不事先知道该函数接受多少参数呢
比如说,
// func is a function object, params is a container of some kind that holds the parameters that that function would accept
function pass_to_func(func, params) {
func(params); // func can be anything, which means it can accept any number of params, depending on context
}
我试过这个:
function pass_to_func(func, params) {
func(params.join()); // params is an array of parameters, but this doesn't work
}
任何建议都很感谢,但请记住,它必须得到支持,因为这是我正在处理的环境 您可以尝试:
// if params is an array
function pass_to_func(func, params) {
func.apply(null, params);
}
// if params is not an array
function pass_to_func(func, params) {
func.call(null, params);
}
将对象传递给函数
function myFunction(obj){
console.log(obj.color);
}
var myobj = {
color:'brown',
smells:'bad'
};
myfuntion(myObj);
这是行不通的,因为调用的函数不是用来处理对象参数的。我需要将参数从容器中取出,并将它们分别传递给被调用的函数。如果它是用javascript编写的,那么函数肯定可以将对象作为参数来处理,因为javascript中的所有内容都是对象。您还可以进行布尔类型的测试,并从中向前推进。但是函数可以接受的内容没有任何限制。内部逻辑将处理它。有许多其他函数可以调用。如果有帮助的话,我正在试图找到一种方法,将数量可变的参数传递给某个函数,而不是重写每个函数来接受和处理对象。所以我想说的是:我更喜欢从我在帖子中提到的容器中打开参数并单独传递这些参数,而不是将所有包装好的参数传递到单个对象中,因为这样我就需要重写每一个这样的函数,以便在收到对象时打开它。在Javascript中,参数的数量是不强制的。您可以将10个参数传递给只定义1的函数,它不会抛出任何错误。您可以调用接受3个参数的函数,而不提供任何参数,并且它不会引发任何编译或运行时错误。这些参数本质上是未定义的,由函数本身来处理任意数量或未定义的参数。酷!我很高兴能帮上忙!