W języku JavaScript metoda document.querySelector('.menu') zwraca
A. pierwszy element HTML o klasie menu
B. wszystkie elementy HTML o klasie menu
C. element HTML o identyfikatorze menu
D. regułę CSS zdefiniowaną dla klasy menu
Metoda document.querySelector('.menu') zwraca pierwszy element HTML pasujący do podanego selektora CSS, czyli w tym przypadku pierwszy element mający klasę menu. Kropka przed nazwą oznacza selektor klasy, tak samo jak w CSS: .menu { ... }. Jeżeli w dokumencie masz kilka elementów z class='menu', JavaScript nie zwróci ich wszystkich, tylko ten pierwszy znaleziony w kolejności występowania w drzewie DOM. Moim zdaniem to jedna z najwygodniejszych metod do szybkiego pobrania elementu, np. gdy chcesz dodać klasę, zmienić tekst albo podpiąć obsługę kliknięcia: document.querySelector('.menu').classList.add('active'). W praktyce trzeba jednak uważać, bo jeśli element nie istnieje, metoda zwróci null i dalsze odwołanie, np. do classList, spowoduje błąd. Dobrą praktyką jest więc sprawdzenie wyniku przed użyciem. W standardowym programowaniu front-endowym querySelector działa na selektorach CSS, więc można podawać też np. '#header', 'nav ul li' albo 'button.primary'.
W tym pytaniu najłatwiej pomylić znaczenie selektorów CSS używanych w JavaScript. document.querySelector('.menu') nie pobiera wszystkich elementów z klasą menu, bo od tego jest metoda document.querySelectorAll('.menu'), która zwraca kolekcję NodeList. querySelector działa inaczej: zatrzymuje się na pierwszym elemencie pasującym do selektora. To jest bardzo ważne przy dynamicznych stronach, gdzie kilka przycisków, kontenerów albo pozycji nawigacji może mieć tę samą klasę. Jeśli ktoś oczekuje listy elementów, a użyje querySelector, skrypt będzie działał tylko na jednym elemencie i czasem trudno to potem zauważyć. Znak kropki w selektorze nie oznacza identyfikatora. Identyfikator w CSS i w querySelector zapisuje się przez znak #, czyli element o id='menu' pobralibyśmy przez document.querySelector('#menu'). To częsty błąd, bo nazwy klas i identyfikatorów bywają podobne, ale ich rola w DOM jest inna. Klasa może wystąpić wielokrotnie, id powinno być unikalne w dokumencie. Metoda ta nie zwraca też reguły CSS. Ona pracuje na drzewie DOM, czyli na elementach HTML, a nie na arkuszach stylów. Reguły CSS są analizowane przez silnik przeglądarki osobno, a dostęp do nich odbywa się innymi mechanizmami, na przykład przez document.styleSheets, choć w normalnych projektach rzadko się to robi bez potrzeby. Z mojego doświadczenia najlepiej zapamiętać prostą zasadę: querySelector przyjmuje selektor jak w CSS, ale zwraca tylko pierwszy pasujący element.