И даже был момент, когда я считал, что разобрался, но мои представления оказались неверными (я перепутал замыкание на переменную с замыканием на значение переменной).
Недавно внезапно наткнулся на замечательную, на редкость толковую статью про замыкания для новичков.
Она бы сэкономила мне время, если бы я её прочитал сразу.
Некоторые называют её лучшим объяснением из существующих в интернете.
увы, осталось лишь зеркало tinyurl.com/c3ruxo7
(не смог вставить прямую ссылку - дайрики зачем-то автоматически подменяют в ссылке в слове javasсript английскую букву c на русскую, портя ссылку)
Написано на примере Javasсript, но практически не требует знаний JS и подходит для понимания принципа применительно к любому языку.
Правда, примеры #5(ключевой!) и #6 могут (и, скорее всего, будут) работать в других языках по-другому.
Причина - противоестественный лексический скоуп локальных переменных в Javasсript (в версии 1.7 JS был таки допилен - появилось ключевое слово let, что исправило ситуацию, хотя и не до конца).