Все в Java Script является контекстом выполнения.

Представьте контекст выполнения в виде контейнера. Контейнер состоит из двух частей: памяти и кода.

Когда начинается выполнение программы, JavaScript проходит через код и создает память для всех переменных и функций в коде. Вначале, поскольку ни одна из переменных не инициализирована, значения переменных сохраняются как «неопределенные». тогда как для функций код хранится как есть.

Данные хранятся в памяти в виде пар ключ-значение.

Как только выделение памяти завершено, начинается выполнение кода, где каждая строка выполняется по одной в стеке вызовов.

Когда встречается инициализация переменной, ключевое слово undefined заменяется значением переменной.

Если встречается вызов функции, то создается новый контекст выполнения функции, и описанный выше процесс повторяется, как выделение памяти и выполнение кода.

После завершения выполнения контекст выполнения удаляется сборщиком мусора, а память освобождается.

Первоначально опубликовано на https://shilpathotapages.notion.site.