W JavaScript operator relacyjny > nie działa wyłącznie dla liczb. Gdy obie strony są łańcuchami znaków (napisami), wykonywane jest porównanie leksykograficzne, czyli "słownikowe": analizuje się kolejne znaki od początku i porównuje ich wartości (punkty kodowe w Unicode). Wynik zależy od pierwszego miejsca, w którym napisy się różnią.
Dla wyrażenia "def" > "abc" porównanie zaczyna się od pierwszego znaku:
- pierwszy znak "def" to d,
- pierwszy znak "abc" to a.
Ponieważ d ma większą wartość kodową niż a, całe porównanie jest prawdziwe i zwraca true. Nie trzeba sprawdzać kolejnych liter, bo wynik jest już przesądzony na pierwszym znaku.
Dlaczego pozostałe propozycje są błędne?
- "ab" > "c" zwraca false, bo już na pierwszym znaku "a" jest mniejsze niż "c". Długość napisu nie "ratuje" wyniku.
- "abc" > "def" zwraca false, bo "a" jest mniejsze niż "d" (odwrotny kierunek niż w poprawnej opcji).
- "a" > "b" zwraca false, bo "a" jest mniejsze niż "b".
Wskazówka egzaminacyjna: przy porównaniach napisów z użyciem > i < zawsze sprawdzaj pierwszą różniącą się literę. Jeśli potrzebujesz porównania zgodnego z regułami językowymi (np. polskie znaki, ignorowanie wielkości liter), zwykle używa się metod takich jak localeCompare lub sortowania z odpowiednią funkcją porównującą.