Передача функции с параметрами в качестве параметра, но которая принимает параметр вызывающей функции? - PullRequest
0 голосов
/ 11 июня 2018

Как заставить этот пример работать?

Идея состоит в том, чтобы передать в качестве параметра две функции, которые получают внутренние параметры функции, которая получает их в качестве параметра.

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());

Ответы [ 2 ]

0 голосов
/ 11 июня 2018

Я бы определил это как:

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)
0 голосов
/ 11 июня 2018

Вы можете передать значения 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...