Все в javascript запускается внутри контекста выполнения

Что же это за контекст выполнения?

Что ж, контекст выполнения похож на большую коробку, внутри которой выполняется код javascript.

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

  1. Память (также известная как переменная среда): — Здесь все переменные и функции хранятся в формате ключ-значение.
  2. Код: - здесь выполняется код.

Теперь давайте поговорим о создании контекста выполнения:

Контекст выполнения создается в два этапа:

  1. Этап создания памяти: здесь память выделяется для всех переменных и функций. Также здесь переменные инициализируются с помощью undefined, а функции — с определением функции.
  2. Фаза выполнения кода: - Здесь переменная инициализируется с заданным значением, и когда функция вызывается (вызывается), затем бум💥 создается новый контекст выполнения, и происходят те же события, что и выше, но теперь это произойдет для эта вызванная функция, и когда функция выполняется, контекст выполнения также уничтожается, и управление возвращается к строке, где был создан новый контекст выполнения.

Запутался, да? Много новых концепций, так что давайте лучше разберемся с пробным прогоном кода.

ПРИМЕЧАНИЕ: в EC 2.1 квадратная функция будет иметь свое определение, а не неопределенное в части памяти.

Надеюсь, вы лучше поняли этот пример.

Еще один момент: когда создается первый контекст выполнения, то есть EC 1, он называется глобальным контекстом выполнения.

Итак, теперь вы, должно быть, задаетесь вопросом, будет ли много контекстов выполнения, если программа длинная и содержит много функций, то как Javascript управляет ими так эффективно и в правильном порядке.

Но javascript ими не управляет. Шокирует правда?😶

Вот еще один термин Стек вызовов.

Стек вызовов управляет порядком выполнения контекста выполнения.

Стек вызовов — это не что иное, как простой стек, в котором всякий раз, когда создается любой новый контекст выполнения, он помещается в стек вызовов, а затем, после его завершения, извлекается из стека.

Таким образом, всякий раз, когда программа запускается, первый или самый нижний контекст выполнения в стеке вызовов будет?? Да, это глобальный контекст выполнения, потому что это первый контекст выполнения, который создается при запуске программы.

Последнее, что стек вызовов известен под разными именами: -

  1. Стек контекста выполнения
  2. Стек программ
  3. Стек управления
  4. Стек времени выполнения
  5. Машинный стек

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