好的朋友们!我知道stackoverflow中的方向是问你想要什么,并没有证明你希望它如何完成,但我真的不知道如何以更好的方式提出它并且我不是一个javascript专家..那么......我们走吧!
让我们假设我们有以下javascript函数及其各自的输出......
function func_a(param_a, param_b, param_c) {
alert(param_a);
alert(param_b);
alert(param_c);
}
function func_b(func_to_run) {
// Will call "func_a" HERE!
func_to_run("a", "b", "c");
}
func_b(func_a);
// a
// b
// c
我的问题是:
是否有正确和/或更好的方法将参数传递给函数" func_a"当我们将它作为函数" func_b"?
的参数传递时如何将参数传递给函数" func_a"在函数" func_b"呼叫?下面我会给你一个假设的示例...
function func_a(param_a, param_b, param_c) {
alert(param_a);
alert(param_b);
alert(param_c);
}
function func_b(func_to_run) {
func_b_param = "z";
// Will call "func_a" HERE!
func_to_run(value_from_func_b_call, value_from_func_b_call, func_b_param);
}
// Third parameter deliberately empty!
func_b(func_a("a", "b", ));
// a
// b
// z
我不知道我是否清楚地解释了它!如果有任何疑问或建议改进,请告诉我!
谢谢!
答案 0 :(得分:1)
您可以将参数传递给func_b:
function func_a(param_a, param_b, param_c) {
alert(param_a);
alert(param_b);
alert(param_c);
}
function func_b(func_to_run, param1, param2) {
func_b_param = "z";
// Will call "func_a" HERE!
func_to_run(param1, param2, func_b_param);
}
// Third parameter deliberately empty!
func_b(func_a, "a", "b");
虽然这是一个快速而肮脏的答案,但如果我们更好地了解你想要实现的目标,那么可能会有更好的答案。特别是使用新的ES6语法和扩展运算符。
答案 1 :(得分:1)
这是你在找什么?
contentInset
答案 2 :(得分:1)
如何将参数传递给函数" func_a"在功能中 " func_b"调用
如果正确解释问题,您可以将对象传递给func_b
作为参数,其中属性设置为1)要调用的函数; 2)将参数作为数组传递给函数调用; 3)在传递给调用的函数内调用的函数。
您可以使用Reflect.apply()
调用外部函数来调用,可选择在外部函数中设置this
;传递和数组,第一个元素是内部函数,例如调用func_b
,第二个元素是调用函数的参数,前面是spread元素。
调用外部函数的第一个参数定义一个表示要调用的内部函数的参数;在第二个参数中定义rest参数func_a
,表示传递给要调用的内部函数的参数。
function func_a(fn, ...args) {
for (let arg of args) fn(arg)
}
function func_b(func_to_run) {
// Will call "func_a" HERE!
Reflect.apply(func_to_run.fn, null, [func_to_run.innerFn, ...func_to_run.args]);
}
func_b({
fn: func_a,
innerFn: alert,
args: ["a", "b", "c"]
});