W JavaScript operatory relacyjne, takie jak >, <, >=, <=, mogą służyć nie tylko do porównywania liczb, ale także tekstów, czyli łańcuchów znaków typu string.
Jak JavaScript porównuje napisy?
Gdy oba porównywane argumenty są tekstami, JavaScript porównuje je leksykograficznie, czyli podobnie do kolejności słownikowej. Porównywanie odbywa się znak po znaku, od lewej strony.
Przykład:
'def' > 'abc' // true
W tym przypadku porównywany jest najpierw pierwszy znak:
'd'jest dalej w alfabecie niż'a',- dlatego całe wyrażenie zwraca
true.
Przykłady
'a' > 'b' // false
'ab' > 'c' // false
'abc' > 'def' // false
'def' > 'abc' // true
W przykładzie 'ab' > 'c' wynik to false, ponieważ pierwszy znak 'a' jest mniejszy od 'c'. Dalsze znaki nie mają już znaczenia.
Ważna uwaga
Porównywanie tekstów w JavaScript bazuje na kodach znaków Unicode, dlatego wielkość liter ma znaczenie:
'Z' < 'a' // true
Duże litery mają inne kody niż małe litery. Z tego powodu przed porównywaniem napisów często stosuje się np. toLowerCase() albo toUpperCase().
W kontekście egzaminu
Jeśli w pytaniu trzeba wskazać, które porównanie tekstów zwróci true, należy sprawdzić pierwszy różniący się znak. Wyrażenie 'def' > 'abc' jest prawdziwe, ponieważ litera d występuje po literze a.