Что такое замыкание?
Способность функции запоминать область видимости, в которой эта функция была объявлена.
Подробнее https://developer.mozilla.org/ru/docs/Web/JavaScript/Closures
function createCounter() {
var numberOfCalls = 0;
return function() {
return ++numberOfCalls;
}
}
var fn = createCounter();
fn(); //1
fn(); //2
fn(); //3