자바스크립트는(ES6)는 7개의 데이터 타입을 제공한다.
원시타입
- Number
- String
- boolean
- undefined
- null
- Symbol
객체타입
객체, 함수, 배열 등
원시타입
1. Number
배정밀도 64비트 부동소수점 형식을 따른다. 모든 수를 실수로 처리하며 정수만을 표현하기 위한 데이터 타입이 별도로 존재하지 않는다.
//숫자 타입
var integer = 10 //정수
var double = 10.12 //실수
var negative = -20 //음의 정수
정수로 표시되는 수끼리 나누더라도 실수가 나올 수 있다.
//숫자 타입은 모두 실수로 처리된다.
console.log(1===1.0); //true
console.log(4 / 2); //2
console.log(3 / 2;) //1.5
숫자 타입은 추가적으로 세 가지 특별한 값도 표현 할 수 있다.
- Infinity : 양의 무한대
- -Infinity : 음의 무한대
- NaN : 산술 연산 불가
2. String
문자열은 작은따옴표('), 큰따옴표(""), 백틱(``)으로 텍스트를 감싼다.
string은 변경 불가능한 값(immutable value)
3. boolean
논리적 참, 거짓을 나타내는 값으로 true, false
4. undefined
자바스크립트 엔진이 변수를 초기화 할 때 사용하는 값, 변수에 값이 없다는 것을 명시하고 싶을 때는 null을 사용한다.
5. null
프로그래밍 언어에서 Nulld은 변수에 값이 없다는 것을 의도적으로 명시 할 때 사용한다.
6. Symbol
다른 값과 중복 되지 않는 유일무이한 값. ES6에서 추가됨
객체 타입
7. object
자바스크립트를 이루고 있는 거의 모든 것이 객체이다.
데이터 타입의 필요성
몇 바이트의 메모리 공간을 사용해야 낭비와 손실 없이 값을 저장할 수 있는지 알아야한다.
=> 데이터 타입의 종류에 따라 정해진 크기의 메모리 공간을 확보해야한다.
- 값을 저장할 때 확보해야하는 메모리 공간의 크기를 결정하기 위해
- 값을 참조할때 한번에 읽어 들여야 할 메모리 공간의 크기를 결정하기 위해
- 메모리에서 읽어 들인 2진수를 어떻게 해석할지 결정하기 위해
동적 타이핑
변수를 선언할 때 타입을 선언하지 않고 어떤 데이터 값이라도 자유롭게 할당 할 수 있다.
자바스크립트의 변수는 선언이 아닌 할당에 의해 타입이 결정된다.
재할당에 의해 변수의 타입은 언제든지 동적으로 변할 수 있다. == 동적타이핑
변수는 타입을 갖지 않으며 값은 타입을 갖는다.