Если compareFunction не предоставляется, элементы сортируются путём конвертации их в строки и сравнения строк в лексикографическом порядке ("словарном порядке" или "порядке телефонной книги", а не в числовом порядке). Например, "80" в словарном порядке идёт перед "9", а в числовом 9 идёт перед 80.
Если параметр compareFunction предоставлен, элементы массива сортируются в соответствии с return-значением сравнивающей функции. Если a и b являются сравниваемыми элементами, то:
Итак, функция сравнения имеет следующую форму:
function compare(a, b) {Для сравнения чисел, а не строк, функция сравнения может просто вычитать b из a:
function compareNumbers(a, b) {JavaScript использует стабильную сортировку: относительное расположение a и b не меняется, если a и b равны. Если до сортировки индекс a был меньше, чем индекс b, он будет меньше и после сортировки вне зависимости от того, как a и b будут перемещены в ходе сортировки.
Поведение метода sort различается в версиях JavaScript 1.1 и JavaScript 1.2.
В JavaScript 1.1, на некоторых платформах, метод sort не работает. Этот метод работает на всех платформах в JavaScript 1.2.
В JavaScript 1.2 этот метод больше не конвертирует undefined-элементы в null; вместо этого он сортирует их в конец массива. Например, у вас имеется такой скрипт:
<SCRIPT>В JavaScript 1.1 будет выведено:
ant, null, null, null, null, zebraВ JavaScript 1.2 будет выведено:
ant, undefined, undefined, undefined, undefined, zebra