In JavaScript, a closure is a function to which the variables of the surrounding context are bound by reference.
function getMeAClosure() {
var canYouSeeMe = "here I am";
return (function theClosure() {
return {canYouSeeIt: canYouSeeMe ? "yes!": "no"};
});
}
var closure = getMeAClosure();
closure().canYouSeeIt; //"yes!"
Every JavaScript function forms a closure on creation. In a moment I’ll explain why and walk through the process by which closures are created. Then I’ll address some common misconceptions and finish with some practical applications. But first a brief word from our sponsors: JavaScript closures are brought to you by lexical scope and the VariableEnvironment…