Все в javascript запускается внутри контекста выполнения
Что же это за контекст выполнения?
Что ж, контекст выполнения похож на большую коробку, внутри которой выполняется код javascript.
Контекст выполнения состоит из двух частей:
- Память (также известная как переменная среда): — Здесь все переменные и функции хранятся в формате ключ-значение.
- Код: - здесь выполняется код.
Теперь давайте поговорим о создании контекста выполнения:
Контекст выполнения создается в два этапа:
- Этап создания памяти: здесь память выделяется для всех переменных и функций. Также здесь переменные инициализируются с помощью undefined, а функции — с определением функции.
- Фаза выполнения кода: - Здесь переменная инициализируется с заданным значением, и когда функция вызывается (вызывается), затем бум💥 создается новый контекст выполнения, и происходят те же события, что и выше, но теперь это произойдет для эта вызванная функция, и когда функция выполняется, контекст выполнения также уничтожается, и управление возвращается к строке, где был создан новый контекст выполнения.
Запутался, да? Много новых концепций, так что давайте лучше разберемся с пробным прогоном кода.
ПРИМЕЧАНИЕ: в EC 2.1 квадратная функция будет иметь свое определение, а не неопределенное в части памяти.
Надеюсь, вы лучше поняли этот пример.
Еще один момент: когда создается первый контекст выполнения, то есть EC 1, он называется глобальным контекстом выполнения.
Итак, теперь вы, должно быть, задаетесь вопросом, будет ли много контекстов выполнения, если программа длинная и содержит много функций, то как Javascript управляет ими так эффективно и в правильном порядке.
Но javascript ими не управляет. Шокирует правда?😶
Вот еще один термин Стек вызовов.
Стек вызовов управляет порядком выполнения контекста выполнения.
Стек вызовов — это не что иное, как простой стек, в котором всякий раз, когда создается любой новый контекст выполнения, он помещается в стек вызовов, а затем, после его завершения, извлекается из стека.
Таким образом, всякий раз, когда программа запускается, первый или самый нижний контекст выполнения в стеке вызовов будет?? Да, это глобальный контекст выполнения, потому что это первый контекст выполнения, который создается при запуске программы.
Последнее, что стек вызовов известен под разными именами: -
- Стек контекста выполнения
- Стек программ
- Стек управления
- Стек времени выполнения
- Машинный стек
Пожалуйста, поделитесь отзывами в комментариях и поставьте лайк, если узнали что-то новое, и подпишитесь, чтобы получать больше лайков.😊