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

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

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

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

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

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

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

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

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

Мы можем практически увидеть все это с кодом ниже.

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

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

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

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

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

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

Другие темы: