Seria · 6 części · ~67 min czytania
Wnętrze silnika JavaScript: co naprawdę się dzieje, gdy odpalasz kod
Sześć postów śledzi jedno wywołanie funkcji: execution context, hoisting, closure, this, new, garbage collection - cały cykl życia silnika.
- 01
Execution Context i Call Stack - jak JavaScript wykonuje twój kod
Przeczytane NastępneKażda linia JS musi gdzieś się wykonać, każda zmienna gdzieś żyć, każde wywołanie funkcji po sobie wrócić. Silnik trzyma to wszystko w dwóch strukturach - execution context (gdzie aktualnie jestem) i call stack (skąd przyszedłem). To one stoją za closure, this i asynchronicznością.
8 min czytania Czytaj → - 02
Hoisting w JavaScript, czyli o czym tak naprawdę mówi ta metafora
Przeczytane NastępneStandardowe tłumaczenie hoistingu mówi, że deklaracje przesuwają się na górę kodu. Specyfikacja ECMA-262 nie definiuje hoistingu jako mechanizmu, a
letzachowuje się tak, jakby tej zasady nie znał. Co więc naprawdę dzieje się przed wykonaniem twojego kodu i dlaczego TDZ wygląda dokładnie tak, jak wygląda?9 min czytania Czytaj → - 03
Closure w JavaScript, czyli jak funkcja może coś pamiętać
Przeczytane NastępneFunkcje w JS zwykle znikają ze swoją lokalną pamięcią. Closure łamie tę regułę - i to na niej opiera się module pattern, memoizacja, asynchroniczny JS i prywatny stan bez klas.
14 min czytania Czytaj → - 04
Słowo kluczowe this w JavaScript - cztery reguły bindingu w jednym miejscu
Przeczytane Następnethisw JS zachowuje się dziwnie tylko dlatego, że ludzie patrzą nie tam, gdzie trzeba. Wartośćthisustala się dopiero w momencie wywołania funkcji - są tylko cztery reguły, które to wywołanie może wybrać, plus arrow functions, które wyłamują się z całego systemu.6 min czytania Czytaj → - 05
new (i this) w JavaScript - co naprawdę robi to słowo kluczowe
Przeczytane NastępneSłowo new w JS wygląda na krótkie, ale silnik uruchamia za nim cztery kroki naraz - tworzy pusty obiekt, podpina this, linkuje go do prototype'u funkcji i zwraca cały obiekt z powrotem. Bez new to samo trzeba napisać ręcznie z Object.create.
16 min czytania Czytaj → - 06
Garbage Collection w JavaScripcie - jak silnik sprząta po twoim kodzie
Przeczytane NastępneKażdy obiekt, który tworzysz w JS, zajmuje miejsce w pamięci komputera. JavaScript usuwa nieużywane obiekty automatycznie, robiąc miejsce na nowe. Silnik czasem jednak nie potrafi rozpoznać, że dany obiekt nie jest już potrzebny - i wtedy obiekt zostaje w pamięci. Tak powstają memory leaki. Post o mechanizmie tego sprzątania (mark-and-sweep), o najczęstszych pułapkach i o tym, kiedy faktycznie sięgać po
WeakMapczyWeakRef.14 min czytania Czytaj →