@tostershmoster

Как это работает (метод sort)?

function compareNumeric(a, b) {
  if (a > b) return 1;
  if (a == b) return 0;
  if (a < b) return -1;
}

let arr = [ 1, 2, 15 ];

arr.sort(compareNumeric);

alert(arr);  // 1, 2, 15


а именно строка arr.sort(compareNumeric);
функция compareNumeric задана выше с параметрами. но тут их нет. и что с чем сравнивается если они не заданы?
  • Вопрос задан
  • 67 просмотров
Решения вопроса 2
KorniloFF
@KorniloFF Куратор тега JavaScript
Работаю по font-end / JS
Для понимания можете записать так, смысл не поменяется:
arr.sort((a,b)=>compareNumeric(a,b));
Ответ написан
dollar
@dollar
На чёткий вопрос - чёткий ответ.
Функции sort передаётся в качестве аргумента функция compareNumeric.

Передаётся не результат вызова функции compareNumeric, иначе были бы скобки, означающие вызов, а передаётся именно сама функция compareNumeric, (т.е. указатель на неё, т.е. её имя).

Далее функция sort, как бы она ни была устроена внутри, использует функцию compareNumeric по своему усмотрению. Может вызывать её с любыми параметрами, какими захочет. И так как вы не видите, как реализована функция sort внутри, то вы об этом можете лишь догадываться. Но очевидно, что это так, ведь при сортировке нужно будет сравнивать элементы массива попарно.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Artezio Нижний Новгород
от 130 000 до 180 000 ₽
Artezio Москва
от 160 000 до 220 000 ₽
Sportrecs Москва
от 150 000 до 200 000 ₽
29 нояб. 2020, в 00:58
5000 руб./за проект
29 нояб. 2020, в 00:50
800 руб./за проект