[英]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.