I asked a question about callbacks and arrived at another question (see comment). How is a closure different from a callback?
What is a callback function?
A callback function is a function which is:
in Plain English we say A callback is any function that is called by another function, which takes the first function as a parameter or function passed as an argument
It is also common to say "call upon a function", "start a function", or "execute a function".
function getUserInput(firstName, lastName, age, callback2,callback1) {
var fullName = firstName + " " + lastName;
// Make sure the callback is a function
if (typeof callback2 === "function") {
// Execute the callback function and pass the parameters to it
callback2(fullName, age);
}
if (typeof callback1 === "function") {
callback1(lastName);
}
}
function callbackforlastname1(lname){
console.log("---");
}
function genericPoemMaker(name, aged) {
console.log(name + " is finer than fine wine.");
console.log("A " + aged + " of unfortunl smile");
}
getUserInput("Avinash", "Maurya", "26", genericPoemMaker,callbackforlastname1);
A callback depending on a context variable aka bound variables (== object state) will be a closure. It will be a pure function, otherwise, when it only takes free variables (== parameters).
Here is a way to differentiate between those two:
Closure
A Closure is used to extend functionality, for instance if a user clicks a button, we want something to happen on the screen, in that case, we would use a Closure where we pass the user event (a click) and then push data to the view.
Callback
A callback is more or less similar to a closure, but it is more used to inform and provide synchronous capabilities. For instance if you perform jQuery Ajax calls, you'll have callbacks such as
success()
,error()
,beforeSend()
and so forth to handle the asynchronous data.
I fail to see how the two are even related? A closure carries parts of a local state into a function of some sort, think of it as passing by reference.
A callback is meant to notify you about certain change and it redirects program flow. The closure could modify local state but you would never get processor time to handle that, like you would with a callback.
Different definitions:
Callback -
a callback is executable code that is passed as an argument to other code.
Closure -
a closure is a function that is evaluated in an environment containing one or more bound variables. When called, the function can access these variables.
In simple words: a callback using context variables is a closure.