JavaScript: Passing parameters to a callback function JavaScript: Passing parameters to a callback function javascript javascript

JavaScript: Passing parameters to a callback function


If you want something slightly more general, you can use the arguments variable like so:

function tryMe (param1, param2) {    alert(param1 + " and " + param2);}function callbackTester (callback) {    callback (arguments[1], arguments[2]);}callbackTester (tryMe, "hello", "goodbye");

But otherwise, your example works fine (arguments[0] can be used in place of callback in the tester)


This would also work:

// callback functionfunction tryMe (param1, param2) {     alert (param1 + " and " + param2); } // callback executer function callbackTester (callback) {     callback(); } // test functioncallbackTester (function() {    tryMe("hello", "goodbye"); }); 

Another Scenario :

// callback functionfunction 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 computevar extraParam = "this data was missing" ;//call the callback when we have the data    callback(extraParam); } // test functioncallbackTester (function(k) {    tryMe("hello", "goodbye", k); }); 


Your question is unclear. If you're asking how you can do this in a simpler way, you should take a look at the ECMAScript 5th edition method .bind(), which is a member of Function.prototype. Using it, you can do something like this:

function tryMe (param1, param2) {    alert (param1 + " and " + param2);}function callbackTester (callback) {    callback();}callbackTester(tryMe.bind(null, "hello", "goodbye"));

You can also use the following code, which adds the method if it isn't available in the current browser:

// From Prototype.jsif (!Function.prototype.bind) { // check if native implementation available  Function.prototype.bind = function(){     var fn = this, args = Array.prototype.slice.call(arguments),        object = args.shift();     return function(){       return fn.apply(object,         args.concat(Array.prototype.slice.call(arguments)));     };   };}

Example

bind() - PrototypeJS Documentation