Scope, this, closure i typy złożone
42 min · JavaScript · Full-stack i Programowanie
Adam GospodarczykPodstawowy JavaScript posiada dość niską barierę wejścia. Stosunkowo szybko jesteśmy w stanie stworzyć z jego pomocą określoną funkcjonalność i stopniowo poszerzać swoją wiedzę. Już po kilku tygodniach intensywnej nauki możemy sięgać po frameworki i tam wszystko zaczyna się mocno komplikować. Często to skomplikowanie wynika z braku solidnych fundamentów, których niewystarczające zrozumienie każdego dnia przysparza nam problemów.W tym warsztacie wrzucamy na tapet te najczęściej wymieniane zarówno przez początkujących jak i doświadczonych programistów.
Podczas gdy zadeklarowanie zmiennej w JavaScripcie nie wymaga specjalnej wiedzy programistycznej, tak już zrozumienie tego, jak JavaScript interpretuje ten proces, to już inna sprawa. Nagle okazuje się że w pewnych sytuacjach możemy w prosty sposób wygenerować błąd, który nie jest widoczny na pierwszy rzut oka i może spowodować nawet utratę danych w naszej aplikacji.Wyzwanie tutaj stanowi również fakt, że wiele źródeł w Internecie, próbując wyjaśnić działanie tych mechanizmów, niepotrzebnie komplikuje sprawę albo posługując się zbyt skomplikowanym słownictwem albo przykładami. W naszym warsztacie zrobiliśmy wszystko aby każdy z tematów był dla Ciebie jasny a w razie potrzeby zawsze możesz zapytać autora o dodatkowe wyjaśnienie.
Na pierwszy rzut oka przekazywanie informacji w JavaScripcie odbywa się dokładnie na takiej samej zasadzie, bez względu na rodzaj danych na których pracujemy. Okazuje się że tak do końca nie jest. Złożone typy danych (tablice i obiekty) przekazywane są w JavaScripcie przez referencję (odniesienie do oryginału) a nie poprzez wartość.W praktyce oznacza to tyle, że łatwo możemy zmodyfikować oryginalny obiekt na którym pracujemy, co prowadzi do często nieprzewidzianych konsekwencji.
Obiekty są nieodłącznym elementem JavaScriptu. I w związku z tym jak działa scope, domknięcia oraz przekazywanie wartości, musimy mieć strategię do tegom aby odpowiednio pracować z danymi przechowywanymi w obiektach. Mowa tutaj o zamrażaniu oraz kopiowaniu, które mogą odbywać się zarówno w formie "płytkiej" jak i "głębokiej". O tym kiedy wykorzystać którą i co dokładnie oznaczają, dowiesz się w naszym warsztacie.
Złożoność aplikacji JavaScript rośnie w ogromnym tempie a to wymaga nowych narzędzi i strategii rozwoju aplikacji. Przykładem jest podział kodu na mniejsze moduły, co przez długi czas realizowane było z pomocą zewnętrznych narzędzi i CommonJS Modules. Obecnie do naszej dyspozycji są Moduły ES6, które stopniowo zyskują większe wsparcie przeglądarek.Nie zmienia to jednak faktu, że nadal warto sięgać po zewnętrzne narzędzia, ułatwiające pracę z JavaScriptem i to nawet doskonały temat na kolejny warsztat.
Warsztat został stworzony z myślą o osobach które absolutne podstawy programowania w JavaScript mają już za sobą oraz o bardziej doświadczonych programistach, którzy czują że niektóre fundamentalne elementy tego języka stanowią dla nich problem.