簡體   English   中英

將帶有參數的函數作為參數傳遞,但是哪個參數需要調用函數的參數?

[英]Passing a function with parameters as a parameter, but which takes the parameter of the invoking function?

如何使這個例子起作用?

這個想法是通過兩個函數作為參數傳遞的,這兩個函數接收函數的內部參數,該函數將它們作為參數接收。

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

您可以將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); 

我將其定義為:

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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM