Javascript

JavaScript의 데이터 타입에 대해 알아보자!

Yepchani 2023. 10. 9. 19:03

이번 시간에는 자바스크립트의 데이터 타입에 대해 알아보도록 하겠습니다.

 


 

데이터 타입이란

데이터 타입이란 프로그래밍에서 변수 또는 객체가 가질 있는 값의 종류 말합니다.

예를 들어, Number 타입은 숫자 값을, String 타입은 텍스트 문자열 값을 가질 있습니다.

 

데이터 타입의 필요

데이터 타입은 다음과 같은 이유로 필요합니다.

1. 값을 저장하고 참조할 때 필요한 메모리 크기를 정해야 합니다.

2. 메모리에서 읽어 들인 2진수 값을 어떻게 해석해야 할지 알아야 합니다.

3. 연산자 종종 피연산자의 데이터 타입에 따라 다르게 동작합니다. 예를 들어, "+" 연산자는 Number 타입 대해서는 덧셈을 수행하지만, String 타입 대해서는 문자열을 연결합니다.

 

데이터 타입의 종류

자바스크립트에서 데이터 타입은 크게 원시 타입과 객체 타입으로 나뉩니다.

원시 타입 (Primitive Type)

  • Number
    숫자를 나타냅니다. BigInt를 제외한 모든 수는 Number 타입입니다. 정수와 실수 구분이 없으며, 64비트 부동소수점 형식을 따릅니다. 즉, 모든 수를 실수로 처리하며, 정수만 표현하기 위한 데이터 타입이 따로 존재하지 않습니다. Infinity (양의 무한대), -Infinity (음의 무한대), NaN (Not a Number) 등의 특별한 값들도 있으며 이들은 실제 숫자가 아니지만 실수로 처리됩니다.
  • String
    문자열을 나타냅니다. 문자열은 0개 이상의 16비트 유니코드 문자(UTF-16)의 집합으로 전 세계 대부분의 문자를 표현할 수 있습니다. 따옴표 또는 백틱(` `)으로 텍스트를 감싸야합니다.
  • Boolean
    논리적 참, 거짓을 나타내는 true와 false를 값으로 가집니다.
  • undefined
    자바스크립트 엔진이 값을 초기화할 때 사용되며, 아직 값이 할당되지 않았음을 나타냅니다.
  • null
    값이 없음을 의도적으로 명시하기 위해 사용됩니다.
  • Symbol
    다른 값과 중복되지 않는 유일무이한 값입니다. 주로 객체의 유일한 프로퍼티 키를 나타낼 때 사용됩니다.
  • BigInt
    숫자값을 안정적으로 나타낼 수 있는 최대치인 2^53-1보다 큰 정수를 표현할 수 있는 새로운 원시 타입입니다.

객체 타입 (Object/Reference Type)

원시 타입을 제외한 나머지 모든 값은 객체 타입입니다.

 

원시 값과 객체의 비교

그럼 무슨 차이가 있기에 원시 타입과 객체 타입으로 나눈 걸까요?

원시 값

  • 변경 불가능한 값입니다.
  • 원시 값을 가지는 변수의 값을 변경하려면 재할당해야 합니다. (이때 원시 값이 변경되는 것이 아닌 변수의 메모리에 저장된 값이 교체됨을 주의)
  • 변수에 할당하면 해당 메모리 공간에는 실제 값이 저장됩니다.
  • 원시 값을 가지는 변수를 다른 변수에 할당하면 원본의 원시 값이 복사되어 전달됩니다. 이를 값에 의한 전달(pass by value)이라고 합니다. 원본과 복사본은 서로에게 영향을 끼칠 수 없습니다.
 

객체

  • 변경 가능한 값입니다.
  • 객체를 할당한 변수는 재할당 없이 객체를 직접 변경할 수 있습니다.
  • 변수에 할당하면 해당 메모리 공간에는 객체가 저장되어 있는 메모리의 주소인  참조 값이 저장됩니다.
  • 객체를 가리키는 변수를 다른 변수에 할당하면 원본의 참조 값이 복사되어 전달됩니다. 이를 참조에 의한 전달(pass by reference)라고 합니다. 원본과 복사본은 서로에게 영향을 끼칠 수 있습니다.
 

이렇듯 둘은 서로 다른 특성을 가지고 있는데요.

상황에 맞게 적절히 사용하기 위해 두 가지 타입으로 나누어 구분하고 있습니다.

 


 

여기까지 자바스크립트의 데이터 타입에 대해서 알아보았는데요.

 

잘못된 내용이 있다면 지적 부탁드립니다.

감사합니다 :D