контекст выполнения - это место, где ваш код javascript фактически выполняется, а стек вызовов - это коллекция вашего контекста выполнения, которая работает в LIFO (последний в первом способом).

Вышеупомянутые слова кажутся книжным определением, давайте углубимся в них с помощью некоторых практических примеров.

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

Код прост:

x присваивается значение 10;

объявление функции продукта;

в-третьих, вызвать product()и присвоить результат;

Что происходит за кулисами в javascript, как механизм javascript выполняет следующий код ?? .. 🍴 Когда javascript выполняет вышеуказанный сценарий, он создает контекст выполнения t, и каждый контекст выполнения имеет две фазы:

  1. Этап создания:
  2. Этап выполнения

Всякий раз, когда наш скрипт выполняется сначала, он создает глобальный контекст выполнения, а во время фазы создания выполняет следующую задачу:

а. Создает окно глобального объекта

б. Создает привязку объекта this, которая указывает на глобальный объект выше.

c. Установите объем памяти для функций и переменных

d. Сохраните объявление функции в кучах памяти и объявление переменных со значениями undefined в глобальном контексте выполнения.

В нашем примере так:

Глобальный объект: окно,

это: окно,

x: undefined,

продукт: функция {…}.

результат: undefined

После этапа создания он перейдет в этап выполнения, на этом этапе код будет выполняться построчно:

Глобальный объект: окно,

это: окно,

x: 10,

продукт: функция {…}.

результат: product ()

Всякий раз, когда есть вызов функции типа (result = product ()), он создает F контекст выполнения функции, который похож на глобальный контекст выполнения, но вместо создания глобальный объект, он создаст объект arguments, который содержит ссылку на переданные параметры, этап создания продукта будет выглядеть так:

Глобальный объект: окно,

это: Глобальный объект,

z: undefined,

затем этап выполнения:

Глобальный объект: окно,

это: Глобальный объект,

z: 10,

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

Стек вызовов:

Стек вызовов основан на формате LIFO, т.е. последний пришел - первым вышел. Когда вы выполняете сценарий, механизм javascript создает глобальный контекст выполнения и помещает его в верхнюю часть стека.

main (): обозначает глобальный контекст выполнения

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

среднее (): обозначает функцию product () {..}

Механизм Javascript выполнит контекст выполнения, который находится наверху стека, и вытолкнет его из стека. Он будет непрерывно повторять цикл до тех пор, пока стопка не опустеет.

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

результат: 100

Вот и все. 🙌

Clap 👏: Если хочешь,

Следуйте ✋: Дополнительные темы,

Комментарий 💭: Сомнения и предложения.