Moim zdaniem lepiej by było rozbić taki kurs na osobne odcinki. Wygodniej by było go oglądać i ewentualnie wyszukiwać konkretne odcinki z Google czy wyszukiwarki YouTube-owej na Twoim kanale (można wtedy precyzyjniej otagować każdy odcinek). Pewnie dodatkowym plusem dla Twojego kanału było by, że zbierałbyś wyświetlenia z każdego odcinka osobno, więc sumarycznie miał byś ich więcej.
Poniżej rzeczy, które moim zdaniem nadają się do poprawy. Jako, że kurs jest długi, to nie obejrzałem go całego, a przeklikałem fragmentami. Jeśli więc któryś punkt został lepiej wyjaśniony lub sprostowany w innym miejscu, to przepraszam:
- Gdzie najlepiej umieszczać skrypt na stronie [5:29]:
Nie, to umieszczenie skryptu w <head> jest jedną z gorszych praktyk, ponieważ (jak słusznie zauważyłeś) blokuje renderowanie strony. Lepiej jest umieścić go pod koniec </body> lub dodać atrybut defer bądź async, albo pobawić się z <link> + prefetch/preload, żeby odpowiednio ustalić priorytet ładowania skryptu. Kod skryptu można też wywołać na zdarzenie DOMContentLoaded lub load (jeśli część skryptu musi poczekać na załadowanie wybranego fragmentu DOM lub nie ma się kontroli nad miejscem umieszczenia skryptu w HTML-u). Jeśli umieści się skrypt przed elementem, do którego chce się odnieść, to przeglądarka nie znajdzie elementu umieszczonego w DOM po skrypcie.
Ostatecznie używasz async i dlatego Twój skrypt nie generuje błędu podczas operowaniu na DOM-ie, ponieważ skrypt ładuje się później (aczkolwiek async nie jest na tyle bezpieczny w kontekście operowania na DOM co defer, ponieważ przeglądarka nie czeka ze skryptem asynchronicznym na załadowanie się DOM-u). Argument, żeby nie dodawać skryptu w <body>, bo można tym samym modyfikować DOM na oczach użytkownika jest moim zdaniem nietrafiony. Przecież apki często modyfikują coś na stronie na oczach użytkownika. Poza tym, jeśli jakiś ciężki skrypt jest umieszczony w <head>, to przeglądarka niepotrzebnie czeka na jego pobranie i wykonanie, a użytkownik później uzyskuje dostęp do treści strony.
- Zmienne [27:47]:
Brakuje omówienia const i let (co jest jako tako usprawiedliwione w 4:50:50). Rozumiem, że kurs jest pod przygotowanie do egzaminu INF.03/EE09, ale w wytycznych nie znalazłem zawężenia wymogów do konkretnego standardu ECMAScript, więc nie wiem czy użycie let/const było by na takim egzaminie błędem. Natomiast na pewno przydało by się je omówić pod kątem nauki do pracy zawodowej czy ogólnie w ramach stosowania dobrych praktyk i omijania problemów, które generuje var.
- Funkcje związane z pracą na tablicach [3:02:24]:
length to nie jest funkcja, a własność. Zauważyłem, że (przynajmniej pod względem nazewnictwa) wrzucasz własności i funkcje do jednego worka, nazywając je funkcjami. O ile funkcje mogą być własnościami obiektu, to nie każda własność jest funkcją.
- Zasięg zmiennych w funkcji (Zmienne lokalne i globalne) [4:49:46]:
Nie, funkcje tworzone słówkiem function nie są tworzone w zasięgu globalnym. O tym, czy funkcja (a raczej dowolna zmienna) należy do jakiegoś scope, decyduje miejsce jej utworzenia.
To, że funkcję tworzoną słówkiem function można wywołać przed miejscem jej utworzenia spowodowane jest hoistingiem. Nie ma to związku z zasięgiem - można bowiem utworzyć funkcję słówkiem function wewnątrz innej funkcji i ona będzie dostępna w zasięgu lokalnym, ale również będzie można ją wywołać przed miejscem deklaracji. Ten błąd jest powielony w 5:05:44.
[4:56:29] Można dopowiedzieć, że w trybie 'use strict' przypisanie wartości do nieistniejącej zmiennej rzuci błędem, co zapobiegnie niejawnemu stworzeniu zmiennej globalnej.
- Funkcje anonimowe [5:05:00]:
Nie, wewnętrzna nazwa funkcji nie jest bezużyteczna. Jest dostępna wewnątrz funkcji (już nie na zewnątrz) i przydaje się do rekurencji oraz debugger przeglądarki powinien tę nazwę pokazać w call stacku.
[5:05:17]: nie, nie musimy pamiętać o używaniu średnika w JavaScript z powodu obecności mechanizmu ASI (choć używanie średników pomaga ustrzec się przed niespodziewanymi efektami działania ASI).
- Obiekty w JavaScript [5:50:44]:
Można dodać przecinek przy ostatniej własności obiektu (podobnie jest z ostatnim argumentem w funkcji czy ostatnim elementem tablicy). To tzw. trailling comma i przydaje się np. przy zwiększeniu czytelności diffów w kodzie.
- Czym jest DOM (Document Object Model) [6:37:17]:
Przeglądarka ponownie renderuje tylko element (i jego potomków), na którym modyfikuje się innerHTML. Nie renderuje ponownie całej strony, chyba że zmodyfikuje się innerHTML dla całej strony. Całą stronę można wyczyścić i ponownie wyrenderować przy użyciu document.write. Nie wiem czy to miałeś na myśli, ale z tłumaczenia wychodzi, że mówisz o ponownym renderowaniu całej strony przez innerHTML, a nie wybranego fragmentu.
- Eventy [8:35:01]:
Nie, to nie jest lista eventów, a event handlerów.
Taka ogólna rada: widać, że mówisz na spontanie, co z jednej strony jest spoko, bo mówisz z głowy, a nie czytasz z kartki. Tyle, że momentami słychać, że się plączesz lub powtarzasz, co może utrudniać zrozumienie omawianych zagadnień; również w kontekście całego kursu pewnie dało by się skrócić kilkanaście minut, gdybyś się niepotrzebnie nie powtarzał. ;) Więc, moim zdaniem, bardziej profesjonalnie było by, gdybyś sobie spisał scenariusz poszczególnego zagadnienia/odcinka i redukował powtórzenia. A ewentualne przejęzyczenia/zaplątania nagrywał od nowa. Ewentualnie przećwicz sobie kilka razy daną sekcję, razem z pisaniem kodu, żebyś się pewniej czuł prezentując ją na materiale. Pisanie kodu na żywo jest generalnie ryzykowne, bo ludziom zdarza się popełniać literówki - pół biedy, jeśli to nie spowoduje błędu w kodzie, który trzeba debugować w trakcie prezentacji, ale literówki też mogą utrudnić zrozumienie materiału przez odbiorców.