ES6까지는 7개 였지만 ES11에서 BigInt가 추가되어 8개가 되었다.
6.1 숫자 타입
숫자 타입의 값은 배정밀도 64비트 부동소수점 형식으로 모든 수를 실수로 처리합니다.
※ 배정밀도(double precision) : C에서의 double
정수, 실수, 2진수, 8진수, 16진수 리터럴은 모두 2진수로 저장되고, 표현하기 위한 데이터 타입을 제공하지 않아 모두 10진수로 해석됩니다.
추가적으로
•
Infinity
•
-Infinity
•
NaN : 산술 연산 불가
3가지 특별한 값이 존재합니다.
6.2 문자열 타입
UTF-16의 집합으로 대부분의 문자를 표현 가능합니다.
UTF-16은 UTF-8과 차이는
영어의 경우 8은 1byte 16은 2byte로 대부분 표현되고
한글의 경우 8은 3byte로 16은 2byte로 표현됩니다.
즉 데이터를 저장하는 방식에 차이가 있습니다.
6.3 템플릿 리터럴
백틱을 사용해서 표현하며, 개행과 표현식 사용이 가능합니다.
대부분의 문자열의 경우 캐리지 리턴(/r)이 아닌 라인 피드(/n)을 사용해서 개행합니다.
6.4 불리언 타입
true, false
6.5 undefined 타입
유일하게 undefined가 존재하며, 개발자가 의도적으로 사용하는 값이 아닌 변수 초기화시에 사용하는 값입니다. 따라서 값이 없다는 것을 표현시 undefined가 아닌 null을 할당해야합니다.
6.6 null 타입
null이 유일하며, 함수가 유효한 값을 반환할 수 없는 경우 null을 반환하기도 합니다.
6.7 심벌 타입
변경 불가능한 원시 타입의 값으로 이름 충돌 위험 없는 프로퍼티 키를 만들기 위해 사용합니다.
6.8 객체 타입
JS를 이루는 모든것은 객체으로 이전에 나온 6가지 데이터 타입 이외 모든 것은 객체 타입입니다.
6.9 데이터 타입의 필요성
1.
타입에 따른 메모리 공간 확보와 참조
a.
ECMAScript에선 숫자 이외 크기를 규정하지 않아 브라우저마다 다릅니다.
b.
따라서 저장할 시 메모리 공간의 크기를 결정해야합니다.
c.
참조해서 불러들일 때 한번에 읽어야 하는 메모리 공간의 크기를 결정해야합니다.
2.
데이터 타입에 의한 값의 해석
a.
메모리에서 읽어들인 2진수를 해석하는 방법을 규정하기 위해서 입니다.
6.10 동적 타이핑
JS의 변수는 선언이 아닌 할당에 의해서 타입이 결정(타입 추론)되며, 언제든지 변할 수 있습니다.