Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript에서 숫자를 객체로 생성하지 않아야 하는 이유

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를 반환합니다. 이처럼 숫자를 객체로 감싸면 예상치 못한 비교 결과와 성능 저하를 일으킬 수 있으므로, 항상 원시 타입의 숫자를 사용하는 것이 바람직합니다.