При сравнении строк, сравнение просиходит побуквенно/посимвольно.
Тоесть, если у нас есть str1 и str2, то сравнение просиходит так:
str1[0] vs. str2[0]
str1[1] vs. str2[1]
str1[2] vs. str2[2]
...
str1[n] vs. str2[n]
до того момента пока символы не будут разными.
Теперь, как просиходит сравнение каждого символа. Проще говоря, каждый символ переводится в числовое значение, согласно Unicode кодировке, и суть сравнинея символов сводиться к сравнению двух чисел.
Пример.
var str1 = "Арбуз";
var str2 = "абрис";
// начинаем сравнивать первые символы: str1[0] и str2[0]
В JavaScript, как и в других языках програмирования есть функции, которые возвращает числовое значение символа. В JS это charCodeAt().