JavaScript:将参数传递给回调函数

新手上路,请多包涵

我正在尝试将一些参数传递给用作 callback 的函数,我该怎么做?

这是我的尝试:

function tryMe(param1, param2) {
  alert(param1 + " and " + param2);
}

function callbackTester(callback, param1, param2) {
  callback(param1, param2);
}

callbackTester(tryMe, "hello", "goodbye");

原文由 vitto 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 772
2 个回答

如果你想要更通用的东西,你可以像这样使用 arguments 变量:

 function tryMe(param1, param2) {
 alert(param1 + " and " + param2);
 }

 function callbackTester(callback) {
 callback(arguments[1], arguments[2]);
 }

 callbackTester(tryMe, "hello", "goodbye");

但除此之外,您的示例工作正常( arguments[0] 可以用来代替测试器中的 callback

原文由 Simon Scarfe 发布,翻译遵循 CC BY-SA 4.0 许可协议

这也可以工作:

 // callback function
function tryMe(param1, param2) {
  alert(param1 + " and " + param2);
}

// callback executer
function callbackTester(callback) {
  callback();
}

// test function
callbackTester(function() {
  tryMe("hello", "goodbye");
});

另一个场景:

 // callback function
function tryMe(param1, param2, param3) {
  alert(param1 + " and " + param2 + " " + param3);
}

// callback executer
function callbackTester(callback) {
  //this is the more obivous scenario as we use callback function
  //only when we have some missing value
  //get this data from ajax or compute
  var extraParam = "this data was missing";

  //call the callback when we have the data
  callback(extraParam);
}

// test function
callbackTester(function(k) {
  tryMe("hello", "goodbye", k);
});

原文由 Marimuthu Madasamy 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题