0:00 / 0:00

JavaScript bez Tajemnic: JavaScript bez Tajemnic

Scope, this, closure i typy złożone

42 min · JavaScript · Full-stack i Programowanie

Adam Gospodarczyk

Czego się nauczysz

  • Zakres globalny i lokalny
  • Zakres blokowy
  • Hoisting & Temporal Dead Zone
  • Closure
  • Słowo kluczowe this
  • Meotdy call, apply, bind
  • Moduły w JavaScript
  • Przekazywanie informacji przez wartość i referencję
  • Kopiowanie obiektów
  • “Zamrażanie” obiektów

Trudne części JavaScriptu

Podstawowy 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.

Scope, Closure, This, Lexical & Dynamic Scope...czyli co?

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.

Referencja i Wartość - jaka jest różnica?

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.

Shallow copy, deep freeze. Tak, nadal mówimy o JavaScript

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.

Nowe funkcje JavaScriptu

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.

Dla kogo jest ten kurs?

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.