자바스크립트에서 sort 함수로 숫자 배열을 정렬할 때는 비교 함수 compare를 인자로 전달해야 한다.
(객체 배열도 마찬가지. 이건 key에 따라 결과가 달라진다)
(문자열 배열은 인자를 전달하지 않아도 된다)

어쨌든, 비교 함수 compare의 반환값에 따라 정렬 방식이 다른데

1. 반환값이 0보다 큰 경우: 오름차순
2. 반환값이 0보다 작은 경우: 내림차순
3. 반환값이 0인 경우: 변경 없음

내부 로직을 살펴보면,
arr.sort((a, b) = a - b)에서 a는 next 요소를, b는 prev 요소를 가리킨다.
(이 점은 약간 의외다. 순서가 반대이므로 주의가 필요)

오름차순: arr.sort((next, prev) => next - prev);

next - prev > 0인 경우(prev가 작은 경우), 원래대로 prev가 먼저 온다.
next - prev < 0인 경우(next가 작은 경우), 순서를 바꾸어 next가 먼저 온다.

내림차순: arr.sort((next, prev) => prev - next);

prev - next > 0인 경우(prev가 큰 경우), 원래대로 prev가 먼저 온다.
prev - next < 0인 경우(next가 큰 경우), 순서를 바꾸어 next가 먼저 온다.

—————————————————————————————————————————————–

그러나 sort()를 사용하는데 위와 같은 로직을 구체적으로 알 필요는 없다.
(그래도 모르면 찜찜하니까 알아두면 좋지)

간단하게 다음과 같이 사용할 수 있다.
코드를 살펴보면…

// 오름차순 정렬
const arr = [ 10, 4, 7 ];
arr.sort((a, b) => a - b); // 4, 7, 10

// 내림차순 정렬
const arr = [ 10, 4, 7 ];
arr.sort((a, b) => b - a); // 10, 7, 4

끝!

참고문헌

https://developer.mozilla.org