使用javascript调用具有相同参数值的函数

使用javascript调用具有相同参数值的函数,javascript,Javascript,我需要调用具有相同参数值的函数,以使用新的日期范围刷新ChartJs _reportDateStart和_reportDateEnd在函数外部更新,因此我需要调用函数,以便使用新数据更新图表 剧本是: var _reportDateStart; var _reportDateEnd; var _loadChart = function (chartLabel, queryMetrics, queryDimensions) {} 电话是这样打的: _loadChart("Visits", "g

我需要调用具有相同参数值的函数,以使用新的日期范围刷新ChartJs

_reportDateStart和_reportDateEnd在函数外部更新,因此我需要调用函数,以便使用新数据更新图表

剧本是:

var _reportDateStart;
var _reportDateEnd;

var _loadChart = function (chartLabel, queryMetrics, queryDimensions) {}
电话是这样打的:

_loadChart("Visits", "ga:sessions", "ga:date,ga:nthDay");
但也可以是:

 _loadChart("Users", "ga:users", "ga:date,ga:nthDay");

声明全局可访问变量,并在每次调用时指定参数,这样您就可以再次使用这些变量调用函数: 例如:


为此,您可以创建一个带有绑定参数的新函数,如下所示
var\u loadChart bounded=\u loadChart.bind(null,“访问”,“ga:sessions”,“ga:date,ga:nthDay”)


然后每次调用
\u loadChartBounded()
它都会得到相同的参数

我们已经有了全局变量和
.bind()

我将引入另一个使用闭包的解决方案

要了解这些是如何工作的,请转到这个问题及其出色的答案:

//这只是一个例子。
//请将变量名称更改为更有意义的名称:)
var_loadContent=(函数(){
变量a,b,c;
返回函数(a、b、c){
如果(类型为“未定义”){
_a=a;
_b=b;
_c=c;
}
console.log(_a,_b,_c);
}
}());
_装载量(1,2,3);
_装载量(4,5,6);

_loadContent()对于那些来到now(2020年6月15日)的人,下面是从函数中调用函数的最健壮的方法:

让fn=(a,b,c)=>{
/*fn的内容*/
fn(…参数);
}
如果您不知道参数将是什么(用户输入),或者只是不想在重构代码时在多个地方更改参数,那么这将非常有用


是否有什么东西阻止您再次传递相同的参数?嗨,谢谢!是的,我刚刚用这个更新了问题。你的更新没有解释为什么你不能使用相同的参数。嗨,谢谢!有没有一种方法可以在不设置函数外部参数的情况下再次调用_loadChart?没有,我不这么认为,如果您计划再次使用这些参数调用函数,您需要将参数存储在某个位置。如果您计划再次从函数内部调用该函数,那么在这种情况下,无需将变量存储在任何位置,只需调用_loadChart(chartLabel、queryMetrics、queryDimensions);但这只适用于从内部调用它。嗨,谢谢!你如何声明原始函数_loadChart?就像你在代码中做的那样,我的代码从它扩展到了其他地方是的,我确信它在任何地方都能工作,因为它是javascript的内置功能,在function.prototype.bind>=IE9可能是个问题如果你必须支持IE9或更低版本,请在我的mdnHi链接中添加polyfill谢谢!绑定解决方案似乎更易于实现,我之所以添加它,是因为您的“>=IE9”注释。这也适用于IE6
var param1,param2,param3;
var _loadChart = function(a, b, c){
    param1 = a;
    param2 = b;
    param3 = c;
    //rest of the code.
};

function callTheFunctionAgain(){
    _loadChart(a, b, c);
}
_loadChart("Visits", "ga:sessions", "ga:date,ga:nthDay");
callTheFunctionAgain();