JavaScript: kontekst wykonania (Aze)

Jan 23 2023
Gdy kody, które piszemy, działają, w tle działają procesy, których nie widzimy. Kiedy silnik JavaScript odczytuje i wykonuje kody, robi to w 2 krokach.

Gdy kody, które piszemy, działają, w tle działają procesy, których nie widzimy. Kiedy silnik JavaScript odczytuje i wykonuje kody, robi to w 2 krokach. Ten ogólny proces, zwany kontekstem wykonawczym, ma 2 etapy , jak wspomnieliśmy jako faza tworzenia i faza wykonania .

W pierwszym etapie, zwanym fazą tworzenia, silnik JS wykonuje swego rodzaju zapoznanie się z kodem i prace przygotowawcze. Tworzy kontekst, przydziela pamięć do przechowywania zmiennych i funkcji. W kolejnym etapie, jakim jest faza wykonania , silnik JS asymiluje wymienione przez nas wartości ze znanymi mu zmiennymi i wywołuje funkcje.

Możemy to porównać do przygotowywania pewnego rodzaju jedzenia. Od początku dowiadujemy się, jakie zapasy są potrzebne do jedzenia, które będziemy przygotowywać (faza tworzenia).

Faza tworzenia

Następnie ustalamy ilość zapasów i rozpoczynamy akcję przygotowania jedzenia (faza wykonania).

Faza wykonania

Kiedy kod jest wykonywany po raz pierwszy, najpierw tworzony jest globalny kontekst wykonania i wykonywane są wspomniane fazy. Następnie, jeśli funkcje istnieją i są wywoływane, tworzone są konteksty wykonywania funkcji i wykonywane są obie fazy.

Praktycznie możemy to wszystko zobaczyć za pomocą małego kodu.

  1. Gdy ten kod zostanie odczytany przez silnik, najpierw zostanie utworzony kontekst globalny .
  2. Globalny kontekst wykonania

2. Jeśli zauważyłeś, nic nie zostało zrobione ze zmienną tech w funkcji getTechStack . Dzieje się tak, ponieważ zmienna znajduje się wewnątrz funkcji getTechStack . Po wywołaniu tej funkcji, jak w linii 9, zostanie utworzony nowy kontekst funkcjonalny i ponownie wykonane zostaną 2 fazy w tym kontekście. Tylko wtedy zmienna techniczna będzie traktowana jak każda inna zmienna.

Kontekst wykonania funkcji

W przeciwieństwie do kontekstu globalnego, obiekt globalny w kontekście funkcjonalnym będzie równy obiektowi arguments , który odwołuje się do parametrów funkcji.

Tak więc za każdym razem, gdy wywołana zostanie funkcja inna niż kontekst globalny, zostanie utworzony nowy kontekst i ta sama procedura zostanie powtórzona.

Dziękuję za przeczytanie. :)

Inne tematy: