05. Lexical Closure
Замыкание (Closure) или более полно — лексическое замыкание (Lexical closure) — это совокупность функции и данных того контекста (окружения), в котором эта функция создана.
If a function leaves the scope in which it was created, it stays connected to the variables of that scope where function was declared (and of the surrounding scopes). A closure is a function plus the connection to the scope in which the function was created:
Не нужно без необходимости создавать функции внутри функций в тех случаях, когда замыкания не нужны. Использование этой техники увеличивает требования к производительности как в части скорости, так и в части потребления памяти.
Как пример, при создании нового объекта/класса есть смысл помещать все методы в прототип этого объекта, а не описывать их в тексте конструктора. Дело в том, что если сделать по-другому, то при каждом создании объекта для него будет создан свой экземпляр каждого из методов, вместо того, чтобы наследовать их из прототипа.
Поскольку вышеприведенный код никак не использует преимущества замыканий, его можно переписать следующим образом:
Last updated
Was this helpful?