javascript 12.11
W celu optymalizacji, na przykład nie używać tablica.length w petli, tylko wyciagnac to poza petli
Pętla for...of: - by iterować po tablicy/stringu
for (const element of tablica){
zadanie;
}
Pętla for … in - iteracja po kluczach (obiekty/słowniki)/indeksach:
for (const indeks in owoce){
zadanie;
}
Można użyć for...of dla obiektów ALE trzeba użyć Object.values(obiekt) lub Object.keys(obiekt) lub Object.entries(obiekt), ale to jest by otrzymać obie wartości w parze.
Dla map i set także używa się for...of.
Jeśli wstawi się "
" to będzie przerwa pomiędzy wartościami, w stringu.
SPOSOBY OPTYMALIZACJI PĘTLI:
- Cachowanie długości.
- Minimalizowanie dostępu do właściwości w obiekcie - wyciągnięcie poza pętle wartości docelowych/ cachowanie odniesienia.
- Odwrotna iteracja
Iteratory to obiekty, które mają metodę next. Odczytują wartość danego indexu i mają dane do następnej wartości. Metoda next zwraca obiekt, wartość z dwoma właściwościami - bieżąca wartość oraz zmienną "Done", która jest booleanem. Mówi, czy na tym obiekcie kończy się np. tablica. Jeśli się będzie sprawdzać element, którego już nie ma to dostanie się undefined i done:true. Używa się, gdy trzeba mieć całkowitą kontrolę nad iteracjami.
FUNKCJE:
Funkcje mogą być zdefiniowane później niż są wywoływane. Hoisting JavaScriptu powoduje, że deklaracja funkcji - jak ma wyglądać itp. to zawsze bierze ten kawałek i przenosi go na górę kodu.
Funkcje możemy zapisać od razu do zmiennej:
const nazwa = function(a,b){
return a,b;
}
Deklaracje funkcji można wywoływać z każdego miejsca, ale wyrażenia już nie. Można je przekazywać jako argumenty, zwracać z funkcji, ale nie są one hoistowane. Deklaracje są dobre, gdy robi się to na samej górze, są duże, mają elementy publiczne i nie boimy się ich złego użycia. Wyrażenia są lepsze jako funkcje wewnętrzne, elementy, które można przekazywać do innych funkcji i potrzebujemy dynamicznego przypisywania. Funkcja w wyrażeniu funkcyjnym nie musi mieć nazwy - wtedy bierze nazwę samej zmiennej, ale może mieć. Parametry funkcji to są te podawane wartości, które będą wykorzystane. Argumenty funkcji są w deklaracji. Jeśli poda się za mało parametrów to argumenty traktują wartości jako undefined. JavaScript traktuje argumenty jako pseudotablicę. Nie ma metod tablicowych.
Jeśli poda się za dużo parametrów to można je wykorzystać w taki sposób - jak się da obiekt arguments to pobiera on wszystkie podane argumenty. Można po nim iterować.