Question: What is closures?
Whenever you defined a the function within another function, the inner function has access to variables in the outer function.
Following are Simple example of closure.
function mainFunction(outerData) { var mainFuncData = 3; function innerFunction(innerFuncData) { console.log(outerData + innerFuncData + (++mainFuncData)); // will alert 16 } innerFunction(10); } mainFunction(7); //17
Question: Why it can access to variables in the outer function?
Because It is defined as var , which means it is global variable.