Javascript 10.11
NOWE OPERACJE
Modulo zwraca resztę z dzielenia, mówi czy liczba x jest całkowicie podzielna przez liczbę y
10 % 3 == 1
10 % 2 == 0
Najmłodszy operator potęgowania x**y lub Math.pow(x,y).
Porównanie luźne == , porównanie ścisłe ===:
Porównanie ścisłe nie wykonuje konwersji typów, ponieważ podczas === porównuje także typ.
5 == '5' otrzymamy true
5 === '5' otrzymamy false
Nierówność luźna !=, nierówność ścisła !==
Konwersja niejawna zachodzi wtedy kiedy JavaScript próbuje wykonać operację na dwóch typach (na przykład dodawanie stringa i liczby)
Jeśli nie da się przekonwertować stringa na liczbę to pojawi się NaN
Jeśli coś jest pomiędzy "" to ZAWSZE jest true.
Używać tylko ścisłych porównań i jawną konwersję typów.
Short circuit evaluation- skrocenie zapisu by od razu pokazywalo wartość
Np const wynik = true && "Zwróci się"; (zwroci się druga wartość)
Operator ?? (nullish coalescing) filtruje null i undefined, a reszte rzeczy (nawet falsy) traktuje jako true
const wynik = 0 ?? "100" zwróci 0
Optional chaining stosuje "?"
np jeśli obiekt ma wartości mocno zagnieżdżone
const miasto = użytkownik.adres?.miasto
zamiast sprawdzać po kolei czy kazda wartość istnieje
Mozną zastosować funkcje w optional chaining:
const obiekt = {
nazwafunkcji: function(){
return xyz;
}
}
const wynik = obiekt.metoda?.();
Może być wykorzystywane także z tablicami.
Kolejność wykonywania obliczeń - (działanie w nawiasach),!, &&, || oraz ??, operatory matematyczne tak jak w matematyce, inne sa na koncu
Operator &&= przypisz jeśli truthy
Operator ||= przypisz jeśli falsy
Operator ??= przypisz jeśli null lub undefined
Jeżeli wartości moze nie być to używamy optional chaining, ponieważ eewentualnie zwroci undefined i nie wywali programu.
Ternary - zapis if else w jednej linii
const status = warunek ? wartość dla true : wartość dla false
Array.from(obiekt) - pobieramy elementy z obiektu i tworzymy z tego listę.
Infinity jest to specjalna wartość typu Number.
Dobra funkcja ma w nazwie czasownik, camelCase.
Funkcje strzałkowe - zwięzła składnia funkcji.
const nazwa = (parametr) => {
return x*2;
}
const nazwa = (parametr - jeśli jest tylko jeden argument to bez nawiasow) => x2; (implicit return)
Mogą być wykorzystywane jako argumenty innych funkcji.
(n => n2) Uzywa się metodami map/filter/reduce
Aktywowanie użytkownika od razu do zła praktyka.
Undefined oruchamia wartość domyślną w funkcji. 0 i false także.
Rest parameters:
...args tworzy tablicę z argumentów, działają z funkcjami strzałkowymi
Funkcja wyższego rzędu (higher order function) - przyjmują inne funkcje jako argumenty (wbudowane funkcje wyższego rzędu - map/reduce/filter z funkcją strzałkową). Łączą małe funkcje, rozbijają skomplikowany problem na mniejsze elementy.
Złożone typy: obiekty, funkcje, tablice.
Przypisywanie funkcji do zmiennych pozwala na dynamiczne zarządzanie funkcjonalnością. Można przypisać wiele funkcji do jednej zmiennej w zależności od potrzeby. Można mieć w tablicy kilka funkcji strzałkowych. Funkcje w obiektach (metody), daje się nazwe, dwukropek a następnie funkcje strzałkowe.
callback()
Funkcje mogą mieć swoje właściwości jako obiekty