如何使这个例子有效?
这个想法是将两个函数作为参数传递,这两个函数接收函数的内部参数,并将它们作为参数接收。
function x(a, b, c){
console.log(a + b + c);
}
function y(a, b, c){
console.log(a + b + c);
}
function root(param, fn1, fn2){
var a = a;
var b = b;
var c = c
fn1(a,b,c);
fn2(a,b,c);
}
root("pm", x(), y());
答案 0 :(得分:1)
你可以将a,b,c的值作为一个数组传递,然后将函数x和y作为参数传递给你的函数
function x(a, b, c){
console.log(a + b + c);
}
function y(a, b, c){
console.log(a + b + c);
}
function root(param, fn1, fn2){
var a = param[0];
var b = param[1];
var c = param[2];
fn1(a,b,c);
fn2(a,b,c);
}
root([1,2,3],x,y);
答案 1 :(得分:0)
我将其定义为:
function dual(fn1, fn2, ...params) { // a rest parameter
fn1(...params); // spread arguments
fn2(...params);
}
所以可以这样做:
dual(x, y, 1, 2, 3); // pass function references, not function results
只是为了好玩:你可以用无限量的功能实现这一点:
const combine = (...fns) => (...args) => fns.forEach(fn => fn(...args));
combine(x, x, z, z, z)(1, 2, 3)