Замыкание - это функция, плюс ее область видимости. Контекст выполнения JavaScript - однопоточный язык. Это означает, что у него один стек вызовов и в один момент времени он может выполнять только одну задачу. Новая задача или запрос на выполнение всегда будет сверху стека. Как только запущенная функция завершится, ее контекст выкидывается из стека, запустив контекст выполнения, который стоит ниже в очереди. Динамическая и Лексическая область видимости Область видимости - это способ где искать переменную. Динамическая область видимости ищет функцию там, где она вызывается. Лексическая, где функция была объявлена. Окружение для области видимости — это доступная из текущей области видимости структура данных. Для динамической области видимости есть только глобальное окружение, и функция, возвращаемая из dynamicScope, найдет глобальную переменную. В случае c лексической области видимости, внутренняя функция помнит, где она была объявлена. В данном случае, она помнит, что в ее окружении ест