如何将不同数量的参数传递给函数,而不是接受不同数量的参数?

时间:2018-02-12 15:35:11

标签: 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'});  // 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 
}

我们非常感谢您提出任何建议,但请注意,Google Apps Script必须支持此建议,因为这是我正在处理的环境。

2 个答案:

答案 0 :(得分:1)

您可以尝试:

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

答案 1 :(得分:0)

将对象传递给函数。

function myFunction(obj){
  console.log(obj.color);
}

    var myobj = {
        color:'brown',
        smells:'bad'

    };

myfuntion(myObj);