JavaScript/HTML/CSS Flashcards
Co to jest scope? Zakres zmiennych w JavaScript
Scope, czyli zakres zmiennych od ECMAScript 6 został dość mocno rozbudowany. Zakres poszczególnych zmiennych jest zależny od sposobu, w jaki zostaną zadeklarowane.
let
Przy pomocy słowa kluczowego let deklarujemy lokalne zmienne w ramach bloku kodu (block scope local variable). Zmienne tego typu zachowują się podobnie jak w innych językach, np. w Javie. Ich zakres jest ograniczony tylko do bloku kodu, w którym zostały zadeklarowane.
const
Słowo kluczowe const służy do deklarowania stałych. Ich zakres jest analogiczny do zmiennych zadeklarowanych przy pomocy let.
Jedyna różnica polega na tym, że raz przypisana do stałej wartość nie może zostać już zmodyfikowana.
var
Zakres tych zmiennych ograniczony jest do funkcji, w której zostały zadeklarowane lub do przestrzeni globalnej, jeżeli były zadeklarowane poza funkcją.
brak modyfikatora
Deklaracja zmiennej bez żadnego modyfikatora równoznaczna jest z przypisaniem jej do globalnej przestrzeni.
Jaka jest różnica między == i ===?
Podwójny znak równości przed porównaniem danych próbuje je przekonwertować do tego samego typu, a potrójny znak równości porównuje jeszcze dodatkowo zgodność typów.
Co to jest hoisting?
Hoisting to wbudowany w JavaScript mechanizm wynoszący wszystkie deklaracje zmiennych na początek funkcji. Należy pamiętać że dotyczy to deklaracji, nie samych wartości.
Co to jest domknięcie (closure)?
Mechanizm domknięcia polega na zdefiniowaniu jednej funkcji wewnątrz drugiej.
Wewnętrzna funkcja ma dostęp do zmiennych globalnych, swoich zmiennych lokalnych i również do zmiennych rodzica.
Co to są Obietnice (Promises)?
Obiekty Promise zostały wprowadzone od ECMAScript 6 jako natywne wsparcie dla operacji asynchronicznych. Dzięki nim można niejako odłożyć wykonanie pewnej logiki na bok i zająć się głównym przepływem aplikacji.
Przetwarzanie metody asynchronicznej może zakończyć się powodzeniem lub porażką.
Co to jest funkcja wywołania zwrotnego (callback) ?
Wykorzystanie mechanizmu funkcji zwrotnych polega na przekazaniu fragmentu logiki (funkcji) jako argument do innej funkcji. Funkcja zwrotna może zostać wywołana lub nie w zależności od konkretnej sytuacji.
Do czego służy dyrektywa „use strict”?
Dyrektywa use strict pozwala przełączyć silnik JavaScript w strict mode. W efekcie czego parser JS jest dużo bardziej rygorystyczny i zgłosi błędy, które bez tej dyrektywy są ignorowane.
Korzystanie z tego trybu w większości przypadków jest polecane, ponieważ dzięki temu można szybciej wykryć niektóre błędy i napisać lepszy jakościowo kod.
Jak działa timer w JavaScript (Timing Events)?
JavaScript daje możliwość wywołania funkcji z pewnym opóźnieniem.
setTimeout
Metoda setTimeout jako pierwszy argument przyjmuje funkcję zwrotną, która ma zostać wywołana, a jako drugi czas opóźnienia w milisekundach.
setInterval
Metoda setInterval działa podobnie do setTimeout, z tą różnicą, że wykonuje dany kod cyklicznie.
Metoda zwraca identyfikator, który można przechować i wykorzystać do zatrzymania timera przy pomocy metody clearInterval.
Co to jest Arrow functions?
Mechanizm Arrow functions został wprowadzony w celu skrócenia zapisu funkcji anonimowych.
Co to jest delegowanie zdarzeń DOM?
Delegowanie zdarzeń to technika polegająca na dodawaniu event listenerów do elementu nadrzędnego zamiast dodawania ich do elementów potomnych. Listener będzie wyzwalany za każdym razem, gdy zdarzenie zostanie wyzwolone na elementach potomnych z powodu wystąpienia zdarzenia propagującego DOM
Co to jest this w js?
Nie ma prostego wyjaśnienia dla this; jest to jedna z najbardziej mylących koncepcji w JavaScript. Wytłumaczeniem na szybko jest to, że wartość this zależy od tego, jak wywoływana jest funkcja.
this jest obiektem, który wykonuje obecną funkcję
Jaka jest różnica między null a undefined?
Gdy null pojawia się tylko wtedy, gdy programista przypisze taką wartość do zmiennej, undefined może pojawić się gdy nie inicjalizujemy zmiennej, spróbujemy odczytać wartość z funkcji która nic nie zwraca, odwołamy się do właściwości obiektu, który nie istnieje.
Czy możesz opisać główną różnicę między Array.forEach() a Array.map() i dlaczego wybrałbyś/wybrałabyś jedną lub drugą?
forEach
Iteruje przez elementy w tablicy.
Wykonuje callback dla każdego elementu.
Nie zwraca wartości.
map
Iteruje przez elementy w tablicy.
“Mapuje” każdy element do nowego elementu, wywołując funkcję na każdym elemencie, tworząc w rezultacie nową tablicę.
Główna różnica między .forEach i .map() to to, że .map() zwraca nową tablicę. Jeśli potrzebujesz wyniku, ale nie chcesz mutować oryginalnej tablicy, .map() jest jasnym wyborem. Jeśli potrzebujesz po prostu iterować tablicę, forEach jest dobrym wyborem
Wyjaśnij różnicę pomiędzy: function Person(){}, var person = Person(), i var person = new Person()?
Z technicznego punktu widzenia, function Person(){} jest zwykłą deklaracją funkcji. Konwencja polega na wykorzystaniu PascalCase do funkcji, które mają być używane jako konstruktory.
var person = Person() wywołuje Person jako funkcję, i nie jako konstruktor. Wywołanie jako takie jest częstym błędem, jeśli funkcja ma być używana jako konstruktor. Zazwyczaj konstruktor niczego nie zwraca, dlatego wywołanie konstruktora jak normalnej funkcji zwróci undefined, a to zostanie przypisane do zmiennej przeznaczonej jako instancja.
var person = new Person() tworzy instancję obiektu Person za pomocą operatora new, który dziedziczy po Person.prototype.
Wyjaśnij Function.prototype.bind.
Metoda bind() tworzy nową funkcję, która po wywołaniu ma ustawione słowo kluczowe this na podaną wartość, z podaną sekwencją argumentów poprzedzającą dowolną podaną podczas wywoływania nowej funkcji.