JS

원시 자료형

프도의길 2021. 9. 22. 18:22

자바스크립트에서 원시 타입의 데이터(primitive data types; 원시 자료형)는 객체가 아니면서 method를 가지지 않는 6 가지의 타입

string, number,bigint, boolean, undefined, symbol, (null)

을 말합니다.

이 중에서 자주 사용하는 4 (+1)가지 원시 자료형

string, number, boolean, undefined, (null)

을 살펴보겠습니다.

이 데이터를 유심히 볼까요? 모두 어떤 종류의 데이터인가요?

왜 원시 자료형이라고 부르나요?

'string', 42, true, false, undefined // 데이터가 "하나"의 정보를 담고 있습니다.

원시 자료형은 모두 "하나"의 정보, 즉, 데이터를 담고 있습니다. 옛날에 어떻게 코드를 작성했는지를 돌아보면, 왜 이런 단순한 데이터가 "원시적인" 데이터라고 이야기 하는지 조금은 더 쉽게 이해하실 수 있습니다. 그 때는 데이터 저장소(메모리)의 용량이 제한되어 변수 하나에 데이터 용량이 제한된 하나의 원시 자료형 밖에 담을 수 밖에 없었기 때문입니다.

 

옛날 컴퓨터에서 사용되던 BASIC이라는 컴퓨터 언어인데, 우리가 알고 있는 string과 number는 쉽게 찾을 수 있지만, 배열에 상응하는 녀석은 찾기 어렵죠. 이 때는 배열이 구현 가능했더라도 보통 사이즈가 제한되어 있었습니다. 우리가 배우는 원시 자료형과 같네요.

데이터 보관함 한 칸에 하나의 데이터만 넣을 수 있는 그 때의 "원시적인" 방식이죠. 반면, 참조 타입은 어떤가요?

const colors = ['Blue', 'Green', 'Red', 'Pink']; // 사용될 수 있는 색의 종류를 담고 있습니다.

const archer = {

name: 'tyrande',

race: 'night elf',

str: 29,

dex: 49, // ...

} // 특정 게임의 궁수(archer)의 정보를 담고 있습니다.

  • 참조 자료형은 딱 봐도 하나의 주제는 있지만 분명 서로 다르고, 여러 개의 데이터를 가지고 있는 것을 확인하실 수 있습니다.

 

원시 자료형의 보관함인 변수에는 하나의 원시 자료형만 담을 수 있습니다. 이 특징은 참조 자료형이 보관되는 특별한 보관함과는 구분됩니다. 우리가 배웠던 참조 자료형(배열, 객체...)는 어떻게 코드를 작성하느냐에 따라 보관되는 데이터의 양이 천 개, 만 개가 될 수 있습니다. 반면에, 원시 자료형은 "하나"의 의미를 가지는 데이터임에는 변함이 없습니다. 그렇기 때문에 원시 자료형이 담기는 보관함의 크기는 고정하는 것이 합당합니다. 어느정도 일정한 크기의 데이터가 온다고 예상할 수 있기 때문입니다. 그래서...

변수에는 하나의 데이터만 담습니다.

const num1 = 123;

const num2 = 123456789;

이렇게 변수에는 데이터의 크기와는 관계 없이 하나의 데이터만 담을 수 있습니다. 원시 자료형은 값 자체에 대한 변경이 불가능(immutable)하지만, 변수에 다른 데이터를 할당할 수는 있습니다.

//"hello world!" "hello codestates!" // "hello world!" 와 "hello codestates!"는 모두 변경할 수 없는 고정된 값입니다.

 

let word = "hello world!"

word = "hello codestates!" // 하지만, word라는 변수에 재할당을 하여 변수에 담긴 내용을 변경은 가능합니다.

 

const num1 = 123;

num1 = 123456789; // 에러 발생 // const 키워드로 선언하면, 재할당은 불가합니다.

그런데 변수에는 하나의 데이터만 담습니다.라는 표현은 우리가 지금까지 배운 내용과 다른 점이 있습니다.

배열과 객체를 담았을 때는, 여러 데이터가 들어갔다가 나갔다가 하지 않나요? 하나만 못 담는데..

참조 자료형을 변수에 할당할 때는 변수에 값이 아닌 주소를 저장합니다. 그리고 이 주소 자체와, 주소가 할당되는 과정을 우리가 눈으로 확인할 수 없기 때문에 이해하기 어렵습니다. 하지만 꼭 이해하고 넘어갑시다. 참조 자료형에 대해서는 다음 레슨에서 보다 자세하게 이야기 해봅시다.


Self-Guided Lesson (optional)

  • 아래 내용은 이해하지 못해도, 향후 개발하는데 큰 문제는 없습니다. 다만, 아래 단어들 때문에 개념 이해에 햇갈리는 부분이 있다면 참고하시기 바랍니다.
  • bigintsymbol은 특별한 경우 사용하는 데이터 타입으로, 자세히 다루지는 않습니다. MDN을 참고하여 공부 부탁 드립니다.

'JS' 카테고리의 다른 글

메서드와 this  (0) 2021.10.01
객체 복사, 병합과 Object.assign  (0) 2021.10.01
구조 분해 (Destructing)  (0) 2021.09.22
Spread/Rest 문법  (0) 2021.09.22
참조 자료형  (0) 2021.09.22