데이터 타입(기본형과 참조형)
JavaScript 의 데이터 타입에는 두 가지 종류가 있습니다. 기본형과 참조형입니다.
데이터 타입에 대해 자세히 알아보겠습니다.
1. 기본형
- 값이 담긴 주소값을 바로 복제
ex) 숫자, 문자열, 불리언, null, undefined (null과 undefined 의 차이점이란?), Symbol(ES6추가)
2. 참조형
- 값이 담긴 주소값들로 이루어진 묶음을 가리키는 주소값을 복제
ex) 객체, 배열, 함수, 날짜, 정규표현식
ES6에 추가된 Map, WeakMap, set, WeakSet
먼저, 기본형은 불변성(Immutability) 의 성격을 띄우는데, 불변성을 이해하기 위해서는 메모리와 데이터에 대한 지식과
식별자와 변수의 개념을 이해해야합니다.
이번엔 메모리에 대한 배경지식을 이해해보겠습니다.
메모리와 데이터
1. 비트(Bit)
0 또는 1만 표현할 수 있는 하나의 메모리 조각
2바이트 크기의 정수형 타입(short) 은 0을 포함하여 -32768 ~ +32767 숫자만 허용
=> 이상의 숫자를 입력하면 오류가 나거나 잘못된 값이 저장합니다.
=> 사용자가 직접 4바이트 크기의 정수형타입(int) 으로 변경해야 합니다.
=> JavaScript 는 상대적으로 메모리 관리에 대한 압박에서 자유로워졌습니다.
2. 바이트(Byte)
1 Byte = 8 Bite
비트(Bit)와 마찬가지로 바이트(Byte) 또한 시작하는 비트의 식별자로 위치를 파악할 수 있습니다.
모든 데이터는 바이트 단위의 식별자, 더 정확하게는 메모리 주소값을 통해 서로 구분하고 연결할 수 있습니다.
- 변수 : 변할 수 있는수, 변할 수 있는 데이터 => 변경 가능한 데이터가 담길 수 있는 공간 또는 그릇
- 식별자 : 어떠한 데이터를 식별하는데 사용하는 이름, 즉 변수명
변수 영역과 데이터 영역은 별개로 존재합니다.. (여기서 영역이라는 이름은 가칭입니다)
별개로 존재하는 이유는 데이터 변환을 자유롭게 할 수 있도록 함과 동시에 메모리를 더욱 효율적으로 관리하기 위한 고민의 결과이죠.
자바스크립트는 숫자형 데이터에 비해 64비트(8바이트) 의 공간을 확보합니다.
한번 만들어진 값은 변경되는 것이 아니고, 새롭게 저장되는 것입니다.
이 뜻은 가비지 컬렉팅을 당하지 않는 이상 영원히 변하지 않다는 것이죠!
var c = "abc";
c = c + "def";
var d = 5;
var e = 5;
d = 7;
c 라는 값은 결국 abcdef 가 되는데 이건 있던 abc 값이 변경되는 것이 아니고 새롭게 저장되는 것입니다.
d 같은 경우 5이고, e 도 5 가 저장되는데 기존에 5가 있었으므로 그 값을 재활용하는 개념입니다.
다음은 실행 컨텍스트에 대해 다뤄볼 예정입니다 : )
* 출처 : '코어 자바스크립트 - 핵심 개념과 동작 원리로 이해하는 자바스크립트 프로그래밍', 정재남 지음
'Front-End > JavaScript' 카테고리의 다른 글
[JavaScript] this 파헤치기 (0) | 2020.03.28 |
---|---|
[JavaScript] 실행 컨텍스트(Execution Context) (0) | 2020.03.21 |
[JavaScript] null 과 undefined (0) | 2019.05.13 |
[JavaScript] Symbol 객체 (0) | 2019.05.13 |
[JavaScript] Destructuring (0) | 2019.02.18 |
최근댓글