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

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

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

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

Похожие вопросы