[JavaScript] JS random 함수, ==, === 차이!, sort
1. Math.random() 함수
이 함수는 0 이상 1 미만의 무작위 실수를 생성한다. 이걸 통해서 임의의 숫자를 생성할 수 있다.
예를 들어, 1부터 100까지의 무작위 정수를 생성하려면 Math.random()의 결과에 100을 곱한 후, Math.floor() 함수를 사용하여 소수점 이하를 버림 처림하면 된다.
<script>
var randomNum = Math.floor(Math.random() * 100) + 1;
console.log(randomNum); // 출력: 1부터 100 사이의 무작위 정수
</script>
2. ==, === 차이!
== 연산자는 두 값이 동등한지 비교한다. 즉, 두 값이 같은 타입이 아니더라도 타입 변환을 통해 비교한다.
=== 연산자는 두 값이 일치하는지 비교한다. 즉, 두 값이 같은 타입이고 동일한 값을 가지는 경우에만 true를 반환한다.
<script>
console.log(1 == "1"); // 출력: true
console.log(1 === "1"); // 출력: false
</script>
3. Array.prototype.sort()
이 메서드는 배열의 요소를 적절한 위치에 정렬하며, 문자열 유니코드 코드 포인트 순서로 비교한다.
예를 들어, 숫자 배열을 오름차순으로 정렬하려면 비교 함수를 전달해야 한다.
<script>
var numbers = [4, 2, 9, 3, 5, 1];
numbers.sort(function(a, b) {
return a - b;
});
console.log(numbers); // 출력: [1, 2, 3, 4, 5, 9]
</script>
이 비교 함수는 두 인자 a와 b를 받아 a - b의 결과를 반환한다. 이 값이 음수이면 a를 b보다 낮은 색인에 위치시키고, 양수이면 a를 b보다 높은 색인에 위치시킨다. 이렇게 해서 숫자 배열이 오름차순으로 정렬되는 것이다.
여기서 a, b가 무슨 매겨변수인지 의문이 생길 것이다.
JavaScript에서 함수는 일급 객체이므로, 함수를 다른 함수에 인자로 전달할 수 있다. 이런 경우, 전달받은 함수는 콜백 함수라고 한다.
Array.prototype.sort() 메서드에 전달되는 콜백 함수는 두 개의 인자를 받는다. 이 두 인자는 배열 내부의 두 요소이다.
sort() 메서드는 배열의 모든 요소 쌍에 대해 이 콜백 함수를 호출하며, 콜백 함수의 반환 값을 기준으로 요소의 순서를 정렬한다.
만약 콜백 함수의 반환 값이 음수이면, a가 b보다 앞에 오게 된다.
만약 콜백 함수의 반환 값이 양수이면, a가 b보다 뒤에 오게 된다.
이 과정을 통해서 배열이 오름차순으로 정렬되는 것이다.