Javascript: контекст выполнения (Aze)

Jan 23 2023
Пока коды, которые мы пишем, работают, в фоновом режиме есть процессы, которые мы не видим. Когда движок Javascript считывает и выполняет коды, он делает это в два этапа.

Пока коды, которые мы пишем, работают, в фоновом режиме есть процессы, которые мы не видим. Когда механизм Javascript считывает и выполняет коды, он делает это в два этапа. Этот общий процесс, который называется контекстом выполнения, состоит из 2 стадий , как мы упомянули, как фазу создания и фазу выполнения .

На первом этапе, называемом этапом создания, JS-движок выполняет некоторую работу по ознакомлению и подготовке кода. Создает контекст, выделяет память для хранения переменных и функций. На следующем этапе, который является фазой выполнения , движок JS уподобляет упомянутые нами значения переменным, с которыми он уже знаком, и вызывает функции.

Мы можем сравнить это с приготовлением пищи. С самого начала мы узнаем, какие материалы необходимы для еды, которую мы будем готовить (фаза создания).

Этап создания

Затем определяем количество припасов и начинаем действие по приготовлению еды (фаза исполнения).

Этап выполнения

Когда код выполняется в первый раз, сначала создается глобальный контекст выполнения и выполняются упомянутые фазы. Затем, если функции существуют и вызываются, создаются функциональные контексты выполнения и выполняются обе фазы.

Мы можем практически увидеть все это с помощью небольшого кода.

  1. Когда этот код будет прочитан движком, сначала будет создан глобальный контекст .
  2. Глобальный контекст выполнения

2. Если вы заметили, с переменной tech в функции getTechStack ничего не делалось . Это потому, что переменная находится внутри функции getTechStack . После вызова этой функции, как в строке 9, будет создан новый функциональный контекст , и в этом контексте снова будут выполняться 2 фазы. Только тогда техническая переменная будет рассматриваться как любая другая переменная.

Контекст выполнения функции

В отличие от глобального контекста, глобальный объект в функциональном контексте будет равен объекту arguments , который ссылается на параметры функции.

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

Спасибо за чтение. :)

Другие темы: