od Podstaw
9 godz. 20 min · JavaScript · Full-stack i Programowanie
Piotr PalarzWeb DeveloperJavaScript to język programowania, który napędza niemal wszystkie strony internetowe. Dopełnia on technologie HTML i CSS, za pomocą których tworzymy strukturę i wygląd dokumentu. Co jednak w sytuacji, gdy chcemy po kliknięciu w wybrany przycisk wyświetlić powiększone zdjęcie lub wczytać dodatkowe dane z serwera? To właśnie w takich sytuacjach przydaje się język JavaScript i tzw. DOM API, dostępne w przeglądarce. Jak się przekonasz, możliwości nowoczesnych przeglądarek w połączeniu z tym językiem są naprawdę ogromne.
Język JavaScript może być używany nie tylko na stronach internetowych. Z tego powodu, w kursie omówimy najpierw najważniejsze konstrukcje tego języka, które są niezależne od platformy uruchomieniowej. Dzięki temu zbudujesz fundamenty niezbędne do tego, by wykorzystać ten język np. w środowisku Node.js. Krok po kroku omówimy sposoby tworzenia zmiennych, dostępne typy danych i operatory. Następnie zobaczysz jak tworzyć tablice i obiekty, z jakich instrukcji warunkowych i pętli możesz korzystać, a także jak tworzyć własne funkcje. Przekazywana wiedza uwzględniać będzie nowości, które pojawiły się w języku wraz z rewolucyjnym standardem EcmaScript 6 (ES6).
Sam język JavaScript to nie wszystko, by tchnąć ducha w strony internetowe. Z tego powodu, przeglądarki internetowe udostępniają tzw. DOM API. To interfejs, który z użyciem języka JavaScript pozwala na manipulację treścią i wyglądem strony. W kursie bardzo dokładnie omówimy czym jest Obiektowy Model Dokumentu, a także jak z nim pracować. Zobaczysz jak tworzyć nowe elementy HTML i wstawiać je na stronę, jak modyfikować ich treść, atrybuty, style czy klasy CSS. Poznasz sposoby na odczytywanie położenia elementu na stronie i jego wymiarów, które będą niezbędne w wielu sytuacjach. Dowiesz się także, jak przypisywać obsługę zdarzeń w przeglądarce, by np. wywołać własną funkcję, gdy ktoś kliknie w wybrany przez Ciebie przycisk.
JSON to popularny format wymiany danych, a Ajax to potoczna nazwa dla asynchronicznych zapytań HTTP, które wysyłać możemy z poziomu kodu JavaScript. Dziś niemal każda strona internetowa wykorzystuje te technologie. W niektórych przypadkach jako dopełnienie podstawowej funkcjonalności witryny, a w innych jako główny motor napędzający stronę. Jeśli kiedykolwiek widziałeś, jak na stronie internetowej jakaś treść "doczytuje" się np. podczas przewijania - widziałeś w praktyce Ajax. W jednym z rozdziałów kursu zobaczysz, jak pracować z tym formatem, a także jak wysyłać wspomniane zapytania do serwera.
Choć kurs który masz przed sobą, jest kursem dla początkujących, to aby zrozumieć jak działa język JavaScript i jak z nim się współcześnie pracuje, omówimy dwa ważne tematy - zarządzanie zależnościami i bundlowanie kodu. Dowiesz się czym jest npm i jak z jego pomocą pobierać paczki gotowego kodu z internetu, a także jak sprawić, by bez trudnu dołączać je do własnego kodu. W tym celu skorzystamy z narzędzia snowpack, które pozwoli nam także na optymalizację kodu przed jego wypuszczeniem w świat. Na tym etapie omówimy również jak działają moduły ESM, pozwalające dzielić kod na mniejsze części.
Kurs podzielony został na możliwie krótkie lekcje, do których w każdej chwili możesz wrócić. Jeśli zatem zapomnisz jak odczytywać wymiary elementu na stronie, szybko odnajdziesz odpowiednią lekcję. Czym jednak była by sama teoria i proste przykłady, bez pokazania, jak połączyć je w całość i wykorzystać w praktyce? Dobra wiadomość jest taka, że w kursie stworzymy aż 5 praktycznych projektów, wykorzystujących zdobytą wcześniej wiedzę. Najpierw napiszemy program losujący Dużego Lotka, następnie dynamiczny pasek postępu przeczytania artykułu, dymek pojawiający się nad elementem po najechaniu na niego myszą, wygenerujemy tabelkę w użytkownikami na podstawie danych JSON, a na koniec tworzymy prosty odtwarzacz wideo, z możliwością pauzowania i przewijania filmu.
Kurs ten jest dla wszystkich osób, które znają już podstawy HTML i CSS i chciałyby przejść poziom wyżej i dodać do swoich stron dynamiczności. Żadna wcześniejsza wiedza z zakresu JavaScript nie jest wymagana, ale zalecana jest podstawowa wiedza z zakresu samego programowania (czym są zmienne, pętle, funkcje itd.). Materiał ten będzie również świetnym odświeżeniem i usystematyzowaniem wiedzy dla osób, które już z tym językiem miały do czynienia. Po przerobieniu tego kursu będziesz gotowy, by poznawać język JavaScript dalej i zacząć korzystać z nowoczesnych frameworków.
Teraz porozmawiamy o tym, w jaki sposób
funkcje w języku JavaScript mogą zwracać wartości.
Utworzę sobie funkcję, którą nazwiemy getMessage.
W ten sposób. I w środku tej funkcji mogę mieć dowolny kod,
natomiast później mogę użyć słowa kluczowego return, który coś zwraca.
Ja tutaj będę chciał od razu sobie zwrócić taki string.
Witaj świecie.
Tak to będzie wyglądać.
I teraz co oznacza, że funkcja coś zwraca?
Chociaż może żeby to lepiej zobrazować zróbmy sobie tutaj coś takiego.
Message Witaj świecie.
Czyli utworzyłem jakąś stałą i zwrócę wartość z tej stałej. Ale to będzie
dokładnie to samo, więc w tym przypadku nie byłoby to konieczne.
Teraz co oznacza, że funkcja coś zwraca?
Otóż kiedy ją wywołamy zobacz getMessage
to już nie będzie tak jak wcześniej, że coś zobaczymy.
Kompletnie nic tutaj się nie dzieje.
Nawet jak odświeżę jeszcze raz stronę.
Dlatego, że tutaj został zwrócony ten string
i nic z nim nie zrobiliśmy. Ale moglibyśmy
zrobić console.log i tam przekazać wywołanie tej funkcji.
Czyli ta funkcja zwróci nam Witaj świecie i to zostanie podstawione do console.log.
Zobacz teraz console.log nam to wyświetlił.
Równie dobrze moglibyśmy tutaj zrobić coś takiego, czyli const message
i ta stała nie ma nic wspólnego ze stałą,
która jest tutaj, bo tutaj wchodzi w grę tzw.
zakres zmiennych, o którym jeszcze później powiemy.
Wywołuje getMessage
a to oznacza, że to co zwraca ta funkcja
zostaje przypisane do stałej. I następnie mogę to message podstawić tutaj.
Jak widzisz, efekt jest dokładnie ten sam.
Teraz pokażę Ci trochę inny przykład, żeby
pokazać Ci, że funkcja zawsze można powiedzieć zwraca nam nowe wartości.
Stworzyli byśmy sobie funkcję taką jak makeArray czyli utwórz tablicę.
I chciałbym, żeby ta funkcja zwracała po prostu pustą tablicę.
I teraz za każdym razem jak będę
potrzebował tablicy, to mogę powiedzieć arr równa się makeArr czy makeArray,
ta funkcja się wywołuje, zwraca pustą tablicę i ta tablica jest przypisywana
tutaj. I chcę Ci tylko pokazać, że za każdym
razem tutaj jest tworzony zupełnie inny obiekt.
Gdybym zrobił
tutaj arr2 i wywołam jeszcze raz funkcję makeArray, a następnie w console.log
porównałbym czy dwa razy została zwrócona ta sama tablica,
czy są to różne tablice?
Otrzymamy false.
Zobacz, bo za każdym razem kiedy ta
funkcja się wywołuje, jest tworzona nowa tablica i jest ona zwracana.
No i na koniec pokażę Ci jeszcze jeden
przykład, żeby uświadomić Ci, że słowo kluczowe return kończy działanie funkcji.
Czyli gdyby pod spodem był jakikolwiek kod, to on się nie wykona.
Return od razu zwraca, ale w funkcji możemy mieć również kilka takich słów
kluczowych return. Czyli w kilku miejscach.
A więc stwórzmy sobie funkcję lottery jak
loteria i będziemy chcieli zrobić coś takiego w środku takiego if.
Skorzystamy z obiektu Math, który w JavaScript pozwala nam np.
pobrać randomową liczbę, czyli dowolną liczbę.
To będzie liczba od 0.0 do 1.0
czyli to będzie taka liczba, więc pomnożę ją sobie razy 100.
Zobaczmy w konsoli może co to nam będzie zwracać.
Jak widzisz będę miał takie oto liczby, za
każdym razem inną i będę chciał tutaj powiedzieć, że jeżeli ta wylosowana liczba
jest mniejsza od 50 to chcę zwrócić poprzez return przegrałeś,
natomiast w przeciwnym wypadku nie muszę już robić bloku else.
Chcę zwrócić wygrałeś.
I jak widzisz funkcja może mieć kilka takich return, bo jeżeli jeden z nich się
wykonuje, to kod, który jest poniżej na pewno już się nie wykona.
Ale jak widzisz warunkowo może się wykonać
ten return w zależności od jakiegoś warunku lub ten return.
No i teraz jak byśmy sobie w konsoli
wykonali tę funkcję lottery, raz ją wykonuję,
przegraliśmy, teraz wygraliśmy, no i tak będzie
jak widzisz losowo raz jedno, raz drugie.
Czyli możemy mieć po prostu kilka takich return.
I to w zasadzie tyle, jeśli chodzi o zwracanie wartości funkcji.
Możesz robić dowolne rzeczy i na pewnym etapie możesz zwrócić jakąś wartość.
Natomiast jeżeli w funkcji nie zawarł byś w ogóle czegoś takiego jak return, to
domyślnie ta funkcja po wywołaniu zwróci undefined.
Więc o tym również warto pamiętać.