Tak na szybko.
https://kt.academy/pl/article/js-pierwszy-program
JavaScript został stworzony, by strony internetowe nabrały życia. Technologie, które były wcześniej (HTML i CSS) […]
CSS jest młodszy niż JS. JS powstał w roku 1995, CSS (wg wiki) w 1996, ale faktycznie zaczął być wykorzystywany na szerszą skalę dopiero gdzieś w okolicach 2005.
Może Cię zastanawiać, czemu w poniższym kodzie zostało wypisane dodatkowe undefined. To jest dodatkowa funkcjonalność konsoli - automatycznie wypisuje ostatnią wprowadzoną wartość. Możesz o tym myśleć tak, jakby ostatnia linia kodu była wypisywana do konsoli jako pierwsza. Ta właściwość bardzo ułatwia testowanie prostych operacji. Gdy już poznasz wartości i operacje z następnego rozdziału, odkryjesz że konsola może służyć jako podręczny kalkulator.
Ten fragment jest błędny. Wartość undefined pojawia się z powodu wywołania w konsoli console.log. Konsola bowiem wyświetla wartości zwracane przez funkcję, a console.log nic nie zwraca. Co więcej, wywoływanie console.log w konsoli nie bardzo ma sens, bo… jesteśmy w konsoli i wszystkie wpisane wartości zachowają się, jakby były owinięte w console.log.
Średniki stawia się po to by określić że dana instrukcja jest już zakończona. W niektórych językach, na przykład w Java, są one wymagane i stoją na końcu niemal każdej linii. W innych, na przykład w JavaScript, są one opcjonalne, gdyż sam koniec linii już jest rozumiany jako zakończenie instrukcji.
To nie jest prawda, w JS średniki również nie są opcjonalne, ale działa ASI. Gdyby sam koniec linii był rozumiany jako zakończenie instrukcji, to wówczas choćby taki kod byłby uważany za błąd składni:
someFuncCall(
parameter1,
parameter2
);
Jest kilka powodów dlaczego sporta programistów zawsze ich używa mimo iż nie muszą:
- kiedyś były wymagane i przyzwyczajenia pozostały […]
To też nie jest prawda, bo zawsze były i cały czas są.
Jeśli średnik znajduje się w środku linii, możesz go traktować tak jakby był znakiem enter.
Nie można, bo koniec linii nie jest równoznaczny z końcem instrukcji. Stąd zasady ASI są tak złożone i mogą prowadzić do niespodziewanych rezultatów w przypadkach, w których nie stosuje się średników.
https://kt.academy/pl/article/js-wartosci
To, jak działa znak == w JavaScript jest skomplikowane i radzę ominąć ten temat. Jeśli go spotkasz, zamień go na potrójny znak równości ===.
Działanie tego operatora jest podstawową wiedzą o języku w przypadku języków dynamicznie typowanych! Od koercji typów się w nich nie da uciec.
Dodatkowo rada, żeby zawsze zamieniać == na === jest sama w sobie szkodliwa! Istnieje sporo przypadków, w których użycie == jest jak najbardziej pożądane, np value == null.
Wszystkie liczby w JavaScript są typu number4
A BigInt? Jest wzmianka w przypisie, nie zauważyłem.
Czasem może wystąpić potrzeba zamiany jednego typu na inny.
- Zarówno boolean jak i number najłatwiej jest zamienić na string poprzez dodanie ich do pustego stringa "".
- string najłatwiej jest zamienić na number przy użyciu parseInt.
- string czy number najłatwiej jest zamienić na boolean poprzez porównanie do wartości, którą uznajemy za true.
Boolean i number najłatwiej (i najbardziej elegancko) zamienić na string przez wywołanie String. Sposób tutaj podany wymaga znajomości działania operatora + z różnymi typami danych, co nie jest omówione.
A string i number nie da się zamienić na boolean przez porównanie do innej wartości. A już na pewno nie przy pomocy operatora ===, bo tam nawet nie dojdzie do rzutowania wartości, przy oblaniu pierwszego sprawdzenia, czy wartości są tego samego typu. Rzutowanie nastąpiłoby (ale i tak tylko na czas porównania!) przy użyciu operatora ==, którego w tym rozdziale się nie opisuje i wręcz każe zamieniać na ===. To, co jest pokazane w przykładach, nie jest rzutowaniem.
Poza typami number, string i boolean, JavaScript wspiera jeszcze:
- null oraz undefined, które wprowadzimy przy okazji omawiania zmiennych w rozdziale Zmienne,
- funkcje (function), którym poświęcony jest rozdział Funkcje,
- obiekty (object), którym poświęcony jest rozdział Obiekty.
A BigInt? A symbole? Funkcje nie są osobnym typem, są obiektami:
Every JavaScript function is actually a Function object. This can be seen with the code (function(){}).constructor === Function, which returns true.