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'});

我知道您可以使用普通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'});  // 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个参数的函数,而不提供任何参数,并且它不会引发任何编译或运行时错误。这些参数本质上是未定义的,由函数本身来处理任意数量或未定义的参数。酷!我很高兴能帮上忙!