Фронтенд кухня🥘
927 subscribers
10 photos
1 video
18 links
Вкусно готовим фронтенд, добавляем библиотеки по вкусу, делимся рецептами дебага

Написать в личку: https://t.iss.one/devmargooo

Менторство по фронтенду: https://devmargooo.ru/mentoring

Канал про жизнь и айти: https://t.iss.one/radical_idea
Download Telegram
Лексическое окружение

Начну серию постов, связанную с замыканиями, утечками памяти через замыкания, stale state и stale props в React. В Javascript есть три основные концепции, связанные с замыканиями:

🔹 Lexical environment
🔹 Environment record
🔹 Execution context

Сегодня поговорим о первой из них, а именно - о лексическом окружении.

🔶 Лексическое окружение - это структура, которая определяет, какие идентификаторы (т.е. переменные) доступны в данном фрагменте кода. Создается в момент вызова. Фрагментами кода, которые создают новое лексическое окружение, являются:

🔹 Js файлы. Когда мы запускаем код из js файла, создается глобальное лексическое окружение, и переменные из него будут доступны в любом месте в этом файле
🔹Функции. Вызов функции создает новое лексическое окружение для нее, повторный вызов создаст новое лексическое окружение
🔹Блок кода (то, что внутри {}). Когда интерпретатор доходит до блока кода, он создает новое лексическое окружение, в котором могут находиться переменные, объявленные через let и const.

Каждое лексическое окружение имеет ссылку на внешнее лексическое окружение. Для глобального лексического окружения ссылка на внешнее будет равна null.

На картинке выше вы можете увидеть код и схематичное изображение его лексического окружения. Лексическое окружение foo содержит в себе идентификатор c и ссылку на внешнее лексическое окружение, которое является глобальным. Глобальное лексическое окружение содержит в себе два идентификатора, а его ссылка на внешнее лексическое окружение равна null.

#javascript #замыкание #lexical_environment
👍107