Лексическая область видимости означает, что область видимости переменной определяется там, где она написана в исходном коде, а не откуда она вызывается. Когда функция определяется, она захватывает область видимости своего окружения.
В JavaScript внутренние функции имеют доступ к переменным, объявленным в их внешних (охватывающих) функциях:
function outer() {
const message = "hello";
function inner() {
console.log(message); // доступна здесь
}
inner();
}
message определена в outerinner может получить доступ к message благодаря лексической области видимостиЗамыкания — прямой результат лексической области видимости. Замыкание формируется, когда внутренняя функция сохраняет доступ к своей внешней области видимости даже после того, как внешняя функция завершила выполнение:
function outer() {
const message = "hello";
return function inner() {
console.log(message); // все ещё доступна
};
}
const fn = outer();
fn(); // выводит "hello"
outer уже вернула результат, но inner всё ещё помнит messageЛексическая область видимости определяет правила поиска переменных. Замыкания — это практический результат: они позволяют функциям нести своё окружение с собой, что открывает мощные паттерны вроде инкапсуляции данных и stateful-функций.
Лексическая область видимости определяет область действия переменной на основе того, откуда вызывается функция, а не где она определена в исходном коде.
Новый — ещё не проверен сообществом
Вы