如果您还不知道函数的名称,则将函数作为参数传递

时间:2017-09-09 01:04:56

标签: javascript

我正在尝试编写一个接受另一个函数作为参数的函数,但我不知道该函数究竟是什么,因为用户将有两个函数可供选择。这两个函数都接受相同的参数 我的想法是获取用户想要调用的函数的名称,该名称将存储在projectScoreByXXX中,然后调用它,但它保持告诉我函数未定义

 Tournament.prototype.projectedLeaderboard= function(projectScoreByXXX){

    for(var i =0; i<jsonObj.tournament.players.length; i++){


        jsonObj.tournament.players[i].score = projectScoreByXXX(jsonObj.tournament.players[i].lastname, jsonObj.tournament.players[i].firstinitial);

    }
    leaderboard();

}

}

谢谢

当用户想要调用他将使用的功能时 t.projectedLeaderboard(projectScoreByHole); 或者t.projectedLeaderboard(projectScoreByIndi​​vidual);

projectScoreByIndi​​vidual和projectScoreByHole是我班上的两个函数 projectScoreByXXX不是一个函数名,我把它作为参数名称放在那里,因为我不知道用户将使用哪一个个人或洞 有没有办法做到这一点?

1 个答案:

答案 0 :(得分:3)

您应该直接调用该函数,这里举例说明:

&#13;
&#13;
function caller(func, params) { // in your case: projectedLeaderboard, and you're not
                                // using params since like you said
                                // they would have the same arguments
  func(params); // in your case: projectScoreByXXX(jsonObj...., jsonObj...)
}
function f(n) {
  console.log(n**2);
}
function g(n) {
  console.log(Math.sqrt(n));
}
caller(f, 4);
caller(g, 4);
&#13;
&#13;
&#13;