Ваша функция сравнения (a,b) => a-b
сообщает функции sort
, как сортировать. Другими словами, он говорит sort
, как сравнивать два значения одновременно. Внутренне sort
применяет вашу функцию сравнения несколько раз, пока не получит отсортированные результаты.
если возвращаемое значение меньше нуля, a следует отсортировать по индексу, меньшему чем b (поэтому a помещается в массив до b)
Если возвращаемое значение больше нуля, a следует отсортировать по индексу, большему чем b.
Если возвращаемое значение равно нулю, то порядок должен остаться без изменений.
Любое значение undefined
(в a или b) сортируется до конца массива без фактического вызова функции сравнения.
Это хорошо задокументировано MDN