Page 96 - 6105
P. 96
Зокрема, 'а' (код 1072)> 'Я' (код тисячі сімдесят одна).
Те ж саме відбувається і в англійському алфавіті, там 'a'> 'Z'.
Ряд букв, наприклад е, знаходяться поза основним алфавітом. Зокрема,
маленька літера е має код, більший ніж я, тому 'е' (код 1105)> 'я' (код 1103).
До речі, велика буква Е розташовується в Unicode до А, тому 'Е' (код 1025) <
'А' (код 1 040). Буква е не унікальна, крапки над буквою використовуються і в
інших мовах, приводячи до того ж результату.
Наприклад, при роботі з німецькими назвами:
alert ( "ö"> "z"); // true
Порівняння рядків працює лексикографічно, інакше кажучи, посимвольно.
Порівняння рядків s1 і s2 обробляється за наступним алгоритмом:
Порівнюються перші символи: s1 [0] і s2 [0]. Якщо вони різні, то
порівнюємо їх і, залежно від результату їх порівняння, повертається true або false.
Якщо ж вони однакові, то ... порівнюються другі символи s1 [1] і s2 [1]. Потім
треті s1 [2] і s2 [2] і так далі, поки символи не будуть нарешті різними, і тоді який
символ більше – той рядок і більший. Якщо ж в будь-якому рядку закінчилися
символи, то вважаємо, що він менший, а якщо закінчилися в обох – вони рівні.
Специфікація мови визначає цей алгоритм більш детально. Якщо ж
говорити простими словами, зміст алгоритму точно відповідає порядку, за яким
імена заносяться в орфографічний словник.
"Вася"> "Ваня" // true, тому що початкові символи
збігаються, а потім 'с'> 'н'
"Дома"> "До" // true, тому що початок збігається, але в
1-му рядку більше символів
Буває, що числа приходять в скрипт у вигляді рядків, наприклад як
результат prompt. В цьому випадку результат їх порівняння буде невірним:
alert ( "2"> "14"); // true, так як це рядки, і для
перших символів вірно "2"> "1"
95