JavaScript에서는 숫자(number)를 객체(object)로 변환하지 않는 것이 좋습니다. 그 이유는 숫자는 객체와 비교할 수 없고, 심지어 객체끼리도 서로 비교할 수 없기 때문입니다.
예제 1: 원시 숫자 값 비교
다음 예제에서는 숫자 500을 변수 'x'와 변수 'y'에 각각 할당합니다. 두 변수를 서로 비교하면 출력 결과에서 볼 수 있듯이 Boolean 값 "true"가 표시됩니다.
<html>
<body>
<script>
var x = 500;
var y = (500);
document.write((x===y));
document.write("</br>");
document.write(typeof(x));
document.write("</br>");
document.write(typeof(y));
</script>
</body>
</html>
출력 결과
true number number
두 변수 모두 원시 타입인 number이기 때문에 값과 타입을 함께 비교하는 엄격한 동등 연산자(===)로 비교했을 때 true가 반환됩니다.
예제 2: 숫자와 Number 객체 비교
다음 예제에서는 변수 'y'가 new Number()를 사용해 원시 숫자에서 객체로 변환됩니다. 이후 변수 'x'와 비교하면 출력 결과에서 볼 수 있듯이 Boolean 값 false가 표시됩니다.
<html>
<body>
<script>
var x = 500;
var y = new Number(500);
document.write((x===y));
document.write("</br>");
document.write(typeof(x));
document.write("</br>");
document.write(typeof(y));
</script>
</body>
</html>
출력 결과
false number object
변수 'x'의 타입은 number(원시 값)인 반면, 변수 'y'의 타입은 object입니다. 엄격한 동등 연산자(===)는 값뿐만 아니라 타입까지 비교하기 때문에, 값이 같더라도 타입이 다르면 false를 반환합니다. 이처럼 숫자를 객체로 감싸면 예상치 못한 비교 결과와 성능 저하를 일으킬 수 있으므로, 항상 원시 타입의 숫자를 사용하는 것이 바람직합니다.