假设我有一个随机返回值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中再次调用它?
答案 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
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;
n
次。