JavaScript/HTML/CSS Flashcards

1
Q

Co to jest scope? Zakres zmiennych w JavaScript

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Jaka jest różnica między == i ===?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Co to jest hoisting?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Co to jest domknięcie (closure)?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Co to są Obietnice (Promises)?

A

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ą.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Co to jest funkcja wywołania zwrotnego (callback) ?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Do czego służy dyrektywa „use strict”?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Jak działa timer w JavaScript (Timing Events)?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Co to jest Arrow functions?

A

Mechanizm Arrow functions został wprowadzony w celu skrócenia zapisu funkcji anonimowych.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Co to jest delegowanie zdarzeń DOM?

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Co to jest this w js?

A

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ę

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Jaka jest różnica między null a undefined?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Czy możesz opisać główną różnicę między Array.forEach() a Array.map() i dlaczego wybrałbyś/wybrałabyś jedną lub drugą?

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Wyjaśnij różnicę pomiędzy: function Person(){}, var person = Person(), i var person = new Person()?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Wyjaśnij Function.prototype.bind.

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Co robi DOCTYPE?

A

DOCTYPE to skrót od DOCument TYPE. Służy do informowania agentów użytkownika (user agents), jakiej wersji specyfikacji HTML dotyczy twój dokument. Deklaracja DOCTYPE dla standardów HTML5 to .

17
Q

W jaki sposób wyświetlasz stronę z treścią w wielu językach?

A

Po wysłaniu żądania HTTP do serwera requestujący user agent zwykle wysyła informacje o preferencjach językowych, na przykład w nagłówku Accept-Language. Serwer może następnie użyć tych informacji, aby zwrócić wersję dokumentu w odpowiednim języku, jeśli taka alternatywa jest dostępna. Zwrócony dokument HTML powinien również zadeklarować atrybut lang w tagu , tak jak ….

18
Q

Do czego są dobre atrybuty data-?

A

Zanim frameworki JavaScript stały się popularne, programiści używali atrybutów data- do przechowywania dodatkowych danych w samym DOM, bez innych sztuczek, takich jak niestandardowe atrybuty, dodatkowe właściwości w DOM. Jest przeznaczony do przechowywania niestandardowych danych prywatnych na stronie lub w aplikacji, dla których nie ma już odpowiednich atrybutów ani elementów.

19
Q

Dlaczego ogólnie dobrym pomysłem jest pozycjonowanie CSS pomiędzy head oraz JS script tuż przed /body

A

Umieszczanie w nagłówku jest częścią właściwej specyfikacji w budowaniu zoptymalizowanej strony internetowej. Gdy strona ładuje się po raz pierwszy, HTML i CSS są analizowane jednocześnie; HTML tworzy DOM (Document Object Model), a CSS tworzy CSSOM (CSS Object Model).

script blokuje parsowanie HTML podczas ich pobierania i wykonywania. Umieszczenie skryptów na dole umożliwi parsowanie HTML i wyświetlenie go najpierw użytkownikowi.

20
Q

Jaka jest specyfika selektora CSS i jak to działa?

A

Przeglądarka określa, jakie style mają być wyświetlane w elemencie, w zależności od specyfiki reguł CSS. Zakładamy, że przeglądarka już określiła reguły, które pasują do określonego elementu.

21
Q

Jaka jest różnica między „resetowaniem” a „normalizacją” CSS?

A

Resetting - Resetowanie ma na celu usunięcie wszystkich domyślnych stylów przeglądarki z elementów. Na przykład margin, padding, font-size wszystkich elementów są resetowane, aby były takie same. Będziesz musiał zmienić styl dla wspólnych elementów typograficznych.

Normalizing - Normalizacja zachowuje użyteczne style domyślne zamiast “unstyling” wszystkiego. Poprawia również błędy w typowych zależnościach przeglądarki.

22
Q

Opisz Floats i sposób ich działania.

A

Float to właściwość pozycjonowania CSS. Elementy pływające (floated elements) pozostają częścią przepływu strony i będą wpływać na położenie innych elementów (np. tekst będzie płynął wokół elementów pływających), w przeciwieństwie do elementów position: absolute, które są usuwane z przepływu strony.

23
Q

Opisz z-index i sposób tworzenia kontekstu układania.

A

Właściwość z-index w CSS kontroluje pionową kolejność układania elementów, które się nakładają. z-index wpływa tylko na elementy, które mają wartość position, która nie jest static.

24
Q

Wyjaśnij, w jaki sposób przeglądarka określa, które elementy pasują do selektora CSS.

A

Przeglądarki dopasowują selektory od skrajnie prawej (key selector) do lewej. Przeglądarki odfiltrowują elementy w DOM zgodnie z key selector i przesuwają w górę jego elementy nadrzędne, aby ustalić dopasowania. Im krótsza długość łańcucha selektora, tym szybciej przeglądarka może ustalić, czy ten element pasuje do selektora.

Na przykład ten selektor p span, przeglądarka najpierw znajduje wszystkie elementy <span> i przemierza jego rodzica aż do roota, aby znaleźć element <p>. Dla konkretnego <span>, jak tylko znajdzie </span></p><p>, wie że <span> dopasowane i może zatrzymać dopasowanie.</span></p></span>

25
Q

Opisz pseudoelementy i omów, do czego służą.

A

Pseudoelement CSS jest słowem kluczowym dodawanym do selektora, który pozwala stylizować określoną część wybranych elementów. Mogą być używane do dekoracji (:first-line, :first-letter) lub dodawać elementy do znaczników (w połączeniu z content: …) bez konieczności modyfikowania znaczników (:before, :after).

26
Q

Wyjaśnij swoje zrozumienie box model i sposób, w jaki chcesz, aby przeglądarka w CSS renderowała układ w różnych modelach pudełkowych.

A

Model pola CSS opisuje prostokątne pola, które są generowane dla elementów w drzewie dokumentu i rozmieszczone zgodnie z wizualnym modelem formatowania. Każdy box ma pole zawartości (np. text, an image, etc.) i opcjonalne otoczenie polami padding, border, i margin.

27
Q

Co robi * { box-sizing: border-box; }? Jakie są jego zalety?

A

box-sizing: border-box zmienia jak width i height elementów są liczone, border i padding są również uwzględniane w obliczeniach. Biorąc pod uwagę padding oraz border jako część naszego modelu pudełkowego lepiej współgra z tym, jak projektanci wyobrażają sobie treść w gridach.

28
Q

Jaka jest różnica między pozycjonowaniem relative, fixed, absolute i static elementu?

A

Element pozycjonowany to element, którego obliczona właściwość position jest albo relative, absolute, fixed lub sticky.

static - Pozycja domyślna; element wpłynie na stronę w normalny sposób. Właściwości top, right, bottom, left i z-index nie mają zastosowania.
relative - Pozycja elementu jest dopasowywana względem siebie, bez zmiany układu (i tym samym pozostawiając odstęp dla elementu, w którym byłby, gdyby nie został ustawiony).
absolute - Element jest usuwany z przepływu strony i ustawiany w określonej pozycji względem najbliższego umieszczonego przodka, jeśli taki istnieje, lub w inny sposób względem początkowego bloku zawierającego. Pola absolutnie pozycjonowane mogą mieć marginesy i nie zwijają się z żadnymi innymi marginesami. Te elementy nie wpływają na pozycję innych elementów.
fixed - Element jest usuwany z przepływu strony i ustawiany w określonej pozycji względem viewport i nie porusza się podczas przewijania.
sticky - Pozycjonowanie sticky to hybryda pozycjonowania względnego i ustalonego. Element jest traktowany jako pozycja relative, dopóki nie przekroczy określonego progu, w którym to momencie jest traktowany jako pozycja fixed.