将函数作为参数传递给javascript而不是函数的返回值

时间:2018-02-03 21:51:31

标签: javascript function parameters callback

假设我有一个随机返回值1-6的函数roll()。现在,如果我有另一个名为repeatFunction的函数,它将函数作为参数和数字n。 repeatFunction的目的是将它具有的任何函数作为参数调用n次。但是,如果我将roll()作为参数传递,则repeatFunction会将其解释为roll()函数返回的值1-6,而不是函数。我的代码目前如下:

function repeatFunction(func, n){
    for(i = 0; i < n; i++){
        func;
    }
}
repeatFunction(roll(), 10);

我如何得到它,所以repeatFunction将func参数解释为函数而不是返回值,以便我可以在repeatFunction中再次调用它?

2 个答案:

答案 0 :(得分:3)

传递对roll函数的引用,并在repeat函数内调用它作为回调函数。像这样,

function repeatFunction(func, n){
    for(i = 0; i < n; i++){
        func();
    }
}
repeatFunction(roll, 10);

答案 1 :(得分:1)

您需要传递函数名称而不是返回的执行。

您正在执行roll功能,只需通过roll

repeatFunction(roll(), 10);
               ^

请查看此代码段

重复的函数将递归执行函数fn,直到i == n

&#13;
&#13;
function repeatFunction(fn, n, i){
    if (i === n) return;
    fn();
    
    repeatFunction(fn, 10, ++i);
}

var roll = function() {
  console.log('Called!');
};

repeatFunction(roll, 10, 0);
&#13;
.as-console-wrapper {
  max-height: 100% !important
}
&#13;
&#13;
&#13; 看到?该函数被称为n次。