<코어자바스크립트> 01.데이터타입
데이터 타입 종류
기본형 (원시형, primitive type)
- 기본형은 값이 담긴 주솟값을 바로 복제한다. (모두 불변성)
- 숫자(number), 문자열(String), boolean, null, undefined가 있으며, ES6에서 Symbol이 추가되었다.
참조형 (reference type)
- 참조형은 값이 담긴 주솟값들로 이루어진 묶음을 가리키는 주솟값을 복제
- 객체(object)가 있고 객체의 하위 분류에는 배열(Array), 함수(Function), 날짜(Date), 정규식(RegExp) 등과 ES6에서 추가된 Map, WeakMap, Set, WeakSet 등이 속한다.
메모리와 데이터
- 비트(bit): 0 또는 1 두 가지 값만 표현할 수 있는 하나의 메모리 조각 (1byte는 8개의 bit로 구성되어 있음)
정적 타입 언어(C, 자바..)는 메모리의 낭비를 최소화하기 위해 데이터 타입별로 할당할 메모리 영역이 나뉘어 있지만, 메모리 영역이 과거보다 커진 상황에서 등장한 자바스크립트는!
상대적으로 메모리 관리에 대한 압박에서 자유로워짐 => 메모리 공간 좀 더 넉넉하게 할당!
숫자의 경우 정수형, 부동 소수형 구분하지 않고 64비트(8바이트) 확보
변수와 식별자 차이
변수(variable): 변경 가능한 데이터가 담길 수 있는 공간
식별자(identifier): 어떤 데이터를 식별하는데 사용하는 이름, 변수명을 말함
변수 선언과 데이터 할당
var a; // 변수 선언
메모리에서 비어있는 공간 하나를 확보하고, 변할 수 있는 데이터(변수)를 만든다. 이 데이터의 식별자 이름은 a로 한다.
a = 'abc'; // 데이터 할당
데이터를 저장하기 위한 별도의 메모리 공간을 확보해서, 문자열 'abc'를 저장하고 그 주소를 a라는 식별자를 검색하여 대입
변수 영역에 값을 직접 대입하지 않고 별도의 공간에 나누어 저장하는 이유
=> 데이터 변환을 자유롭게 할 수 있게 함과 메모리를 더욱 효율적으로 관리하기 위해
ex) 미리 확보한 공간 내에서만 데이터 변환을 할 수 있다면, 변환한 데이터를 다시 저장하기 위해서 확보된 공간을 변환된 데이터 크기에 맞게 늘리는 작업 등 필요..
기본형 데이터와 참조형 데이터
상수와 불변값 차이
상수: 변수와 상수를 구분짓는 변경 가능성의 대상은 변수 영역 메모리
불변값: 불변성 여부를 구분짓는 변경 가능성 대상은 데이터 영역 메모리