데이터 타입은 값의 종류를 말한다. 자바스크립트(ES6)는 7개의 데이터 타입을 제공한다.
구분 | 데이터 타입 |
---|
원시타입 | 숫자 타입 (number) |
| 문자 타입 (string) |
| 불리언 타입 (boolean) |
| undefined 타입 |
| null 타입 |
| 심벌 타입 (symbol) |
객체 타입 | 객체타입 |
예를 들어, 숫자 1 과 문자열 '1'은 전혀 다른 값이다. 자바스크립트 엔진은 타입을 구별해서 값을 취급할 것이다.
6.1 숫자 타입
- c나 자바의 경우는 int, long, float, double 등과 같은 다양한 숫자 타입을 제공하는 반면에, 자바스크립트는 독특하게 하나의 숫자 타입만 존재한다.
- 숫자 타입의 값은 배정밀도 64비트 부동소수점 형식을 따른다. 모든 수를 실수로 처리하며, 정수만 표현하기 위한 테이터 타입이 별도로 존재하지 않는다.
1 === 1.0
- 숫자 타입은 추가적으로 세 가지 특별한 값도 표현할 수 있다.
- Infinity, -Infinity, NaN(not-a-number)
6.2 문자열 타입
- 문자열 타입은 텍스트 데이터를 나타내는 데 사용한다. 작은따옴표, 큰따옴표, 백틱으로 텍스트를 감싼다. 자바스크립트에서 가장 일반적인 표기법은 작은따옴표('')를 사용한다.
6.3 템플릿 리터럴
- 멀티라인 문자열, 표현식 삽입, 태그드 템플릿 등 편리한 문자열 처리 기능을 제공하기 위한 기능이다.
- 백틱(``)을 사용해 표현한다.
- 표현식을 삽입하기 위해서는 ${}으로 표현식을 감싼다
console.log(`1+2 = ${1+2}`)
6.4 불리언 타입
- 논리적 참, 거짓을 나타내는 true, false
6.5 undefined 타입
- undefined 타입은 undefined가 유일
- 변수 초기화는 암묵적으로 undefined로 이루어진다. 개발자가 변수에 값이 없다는 것을 명시하고 싶을 땐 undefined보다 null을 사용해야한다.
6.6 null 타입
- null이 유일하다. 대소문자를 구분함.
- 의도적 부재를 명시할 때 사용한다. 변수에 null을 할당하는 것은 변수가 이전에 참조하던 값을 더 이상 참조하지 않겠다는 의미이다.
6.7 심벌 타입
- ES6에서 추가된 7번째 타입으로 변경 불가능한 원시의 타입이다. 다른 값과 중복되지 않는 유일무이한 값.
6.8 객체 타입
- 자바스크립트를 이루고 있는 거의 모든 것이 객체. 6가지 데이터 타입 이외의 값은 모두 객체타입이다.
6.9 데이터 타입의 필요성
- 데이터 타입에 의한 메모리 공간의 확보와 참조에 따른 필요성
- 데이터 타입에 의한 값의 해석에 따른 필요성
- 0100 0001을 숫자로 해석하면 65, 문자열로 해석하면 'A'
6.10 동적 타이핑
- c나 자바 같은 정적 타입 언어는 변수를 선언할 때 데이터 타입을 사전에 선언함. 이를 명시적 타입 선언 이라고 한다.
- 정적 타입 언어는 컴파일 시점에 타입 체크를 수행한다.
- 자바스크립트는 정적 타입 언어와 다르게 변수를 선언할 때 타입을 선언하지 않음. var, let, const 키워드를 활용해 변수를 선언. 따라서 어떠한 데이터 타입의 값이라도 자유롭게 할당할 수 있다.
- 자바스크립트의 변수는 선언이 아닌 할당에 의해 타입이 결정된다. 재할당에 의해 변수의 타입은 언제든 동적으로 변할 수 있다. 이러한 특징을 동적 타이핑이라고 한다.
- 동적 타입 언어는 유연성은 높지만 신뢰성은 떨어진다.