11.8.5 Абстрактный алгоритм реляционного сравнения
(Если оба сравниваемых элемента не являются строками, то:)
Пусть nx будет результатом вызова ToNumber (px).Поскольку px и py являются примитивными значениями, порядок оценки не важен.
Пусть ny будет результатом вызова ToNumber (py).
Если nx равно NaN, вернуть undefined.
Если ny равно NaN, вернуть неопределенное значение.
Если nx и ny являются одним и тем же числовым значением, вернуть false.
Если nx равно +0 и ny равно -0, вернуть false.
Если nx равно −0, а ny равно +0, вернуть false.
Если nx равно + ∞, вернуть false.
Если ny равно + ∞, вернуть true.
Если ny равен −∞, вернуть false.
Если nx равен −∞, вернуть true.
Если математическое значение nx меньше математического значения ny - примечаниечто эти математические значения конечны и не равны нулю - верните истину.В противном случае верните false.
Иначе, px и py являются строками
Если py является префиксом px, верните false.(Строковое значение p является префиксом строкового значения q, если q может быть результатом объединения p и некоторой другой строки r. Обратите внимание, что любая строка является префиксом самой себя, поскольку r может быть пустой строкой.)
Если px является префиксом py, вернуть true.
Пусть k наименьшее неотрицательное целое число, такое, что символ в позиции k в пределах px отличается от символа в позиции k в пределах py.(Такой ak должен быть, поскольку ни одна из String не является префиксом другого.)
Пусть m будет целым числом, которое является значением кодовой единицы для символа в позиции k в пределах px.
Пусть n будет целым числом, которое является значением единицы кода для символа в позиции k в пределах py.
Если m
Когда оба сравниваемых элемента являются строками, это эффективно приводит к кодовым точкам каждого сравниваемого символа.Например, 'firstName' < 'lastname'
, потому что код символа f
(102) меньше, чем код символа l
(108).Для '!firstName' < 'Firstname'
код символа !
(33) меньше, чем код символа F
(70), поэтому также оценивается как true
.В следующем фрагменте приведен пример реализации: