Благодаря замыканиям JavaScript позволяет не выносить флаги за функцию-обработчик и тем самым не засорять области видимости уровнями выше.
Выполнить данный кусочек кода можно в консоли любого браузера. Для демонстрации щёлкайте по любому месту открытой страницы.
window.addEventListener('click', function () {
var i = 0;
return function () {
window.alert('You\'ve clicked it ' + (++i) + ' time(s).');
};
}());