Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save albburtsev/27d0c7673a94ca5d9f02 to your computer and use it in GitHub Desktop.
Save albburtsev/27d0c7673a94ca5d9f02 to your computer and use it in GitHub Desktop.

Определения JavaScript-терминов

Замыкание

Лучшее определение: «Замыкание - это когда объект локальных переменных [[scope]] внешней функции остается жить после ее завершения. Внутренняя функция может обратиться к нему в любой момент и получить переменную внешней функции».

MDN:

Closures are functions that refer to independent (free) variables. In other words, the function defined in the closure 'remembers' the environment in which it was created.

Замыкания — это функции, которые ссылаются на независимые переменные. Другими словами, функция определенная в замыкании «помнит» окружение, в котором она создана.

JavaScript.ru

Замыкание — это внутренняя функция. (lol) И эта функция имеют доступ к переменным внешней функции.

Каждое выполнение функции хранит все переменные в специальном объекте с кодовым именем [[scope]], который нельзя получить в явном виде. Каждый вызов var... - всего лишь создает новое свойство этого объекта, а любое упоминание переменной - первым делом ищется в свойствах этого объекта. Такова внутренняя структура "области видимости" - это обыкновенный объект. Обычно после того, как функция закончила выполнение, ее область видимости [[scope]], т.е весь набор локальных переменных убивается.

Когда одна функция создается внутри другой, то ей передается ссылка на объект с локальными переменными [[scope]] внешней функции.

Wikipedia

Замыкание (англ. closure) в программировании — функция, в теле которой присутствуют ссылки на переменные, объявленные вне тела этой функции в окружающем коде и не являющиеся её параметрами. Говоря другим языком, замыкание — функция, которая ссылается на свободные переменные в своём контексте.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment