Это важная тема для полного понимания работы замыканий в JavaScript. Её часто затрагивают на собеседованиях.
Лексическая область видимости определяет доступность переменных и функций в зависимости от их расположения в коде.
❗️ Ключевой момент: она определяется на этапе компиляции кода.
Лексическую область видимости можно разделить на два основных типа:
➖ Глобальная область видимости
➖ Локальная область видимости
🔎 Рассмотрим каждый тип подробнее:
Глобальная область видимости
Переменные, определённые вне функций или блоков, доступны в любом месте программы.
Локальная область видимости
Делится на функциональную область видимости и блочную область видимости.
Переменные, определённые внутри функции или блока, доступны только внутри этой конкретной функции или блока.
Рассмотрим базовый пример с замыканием:
function getCounter() {
let counter = 0; // Локальная область видимости — доступна для текущей функции и для всех вложенных функций и блоков.
return function() { // Возвращаемая функция имеет доступ к переменным внешней для неё функции.
return counter++;
}
}
let count = getCounter();
console.log(count()); // 0
console.log(count()); // 1
console.log(count()); // 2`💭 Замыкание использует лексическую область видимости, позволяя внутренним функциям запоминать и получать доступ к переменным из их внешнего лексического окружения.
❗️ В JavaScript все функции являются замыканиями именно благодаря лексической области видимости.
#Собеседование #JavaScript