Który operator jest w języku JavaScript operatorem dzielenia modulo (reszta z dzielenia)?
Operator % w JavaScript oznacza operator reszty z dzielenia, potocznie często nazywany modulo. Działa tak, że dzieli lewą wartość przez prawą i zwraca to, co zostaje po wykonaniu dzielenia całkowitego. Na przykład 10 % 3 daje 1, bo 3 mieści się w 10 trzy razy, a reszta wynosi 1. Podobnie 8 % 2 daje 0, więc taki zapis często wykorzystuje się do sprawdzania, czy liczba jest parzysta: jeżeli liczba % 2 jest równe 0, to liczba jest parzysta. W praktyce webowej przydaje się to np. w JavaScript do cyklicznego przechodzenia po elementach tablicy, obsługi slajdera, paginacji, animacji, liczników albo nadawania klas co kilka elementów. Moim zdaniem to jeden z tych operatorów, który wygląda niepozornie, ale naprawdę często pojawia się w normalnym kodzie. Warto też pamiętać o szczególe standardu ECMAScript: w JavaScript % technicznie jest operatorem reszty, a przy liczbach ujemnych wynik może mieć znak liczby dzielonej, więc przy bardziej matematycznym modulo trzeba czasem zastosować dodatkowe przeliczenie. Dobra praktyka to pisać warunki czytelnie, np. z nawiasami tam, gdzie może być wątpliwa kolejność działań, oraz testować przypadki brzegowe.
W tym pytaniu łatwo pomylić operator reszty z klasycznymi operatorami arytmetycznymi, bo wszystkie wyglądają bardzo krótko i są używane między dwiema wartościami. Znak / w JavaScript służy do zwykłego dzielenia i zwraca iloraz, a nie resztę. Przykładowo 10 / 3 da wynik około 3.3333333333333335, czyli wartość zmiennoprzecinkową, zgodną z typowym sposobem reprezentacji liczb w JavaScript jako Number. To nie odpowiada pytaniu o resztę z dzielenia, bo interesuje nas nie wynik dzielenia, tylko to, co zostaje po odjęciu pełnych wielokrotności dzielnika. Znak + jest jeszcze innym przypadkiem, bo wykonuje dodawanie liczb, ale w JavaScript ma też drugie, bardzo ważne zastosowanie: może łączyć teksty, czyli wykonywać konkatenację stringów. Przez to bywa źródłem pomyłek, gdy ktoś miesza liczby i napisy, na przykład 2 + 3 oraz 2 + 3 jako tekst mogą prowadzić do zupełnie innego efektu zależnie od typów danych. Z kolei * oznacza mnożenie, więc 4 * 5 daje 20, ale nie mówi nic o podzielności ani o reszcie. Typowy błąd myślowy polega na tym, że ktoś kojarzy dzielenie modulo z samym dzieleniem i wybiera /, bo temat brzmi podobnie. W kodzie JavaScript trzeba jednak rozróżniać operację dzielenia od operacji pobierania reszty. Jeśli chcemy sprawdzić np. co trzeci element listy, parzystość liczby albo zapętlić indeks w tablicy, używamy właśnie %, a nie /, + ani *. Z mojego doświadczenia najlepiej zapamiętać to przez prosty test: jeśli pytanie brzmi ile zostaje?, to patrzymy na %.