JavaScript: kontekst wykonania
Gdy kody, które piszemy, działają, w tle działają procesy, których nie widzimy. Gdy silnik JavaScript odczytuje i wykonuje kody, robi to w 2 etapach. Ten ogólny proces, zwany kontekstem wykonania , 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, czyli fazie wykonania , silnik JS przypisuje wartości, o których mówiliśmy, znanym już zmiennym i wywołuje funkcje.
Możemy to porównać do przygotowywania pewnego rodzaju jedzenia. Od początku dowiadujemy się, jakie akcesoria są potrzebne do potrawy, którą będziemy przygotowywać (faza tworzenia).
Następnie ustalamy ilość zapasów i rozpoczynamy akcję przygotowania jedzenia (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ą poniższego kodu.
- Gdy ten kod zostanie odczytany przez silnik, najpierw zostanie utworzony kontekst globalny .
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.
W przeciwieństwie do kontekstu globalnego , obiekt globalny w kontekście funkcjonalnym będzie odpowiednikiem obiektu 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:

![Czym w ogóle jest lista połączona? [Część 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































