데이터타입(data type)이란 프로그램에서 다룰 수 있는 값의 종류를 의미한다.
자바스크립트에서는 여러 가지 형태의 타입을 미리 정의하여 제공하고 있으며, 이것을 기본 타입이라고 한다.
자바스크립트의 기본 타입은 크게 원시 타입과 참조 타입으로 구분할 수 있다.
Type | JS | Description |
---|---|---|
원시 타입 | number | 정수와 실수 구분 없이 하나의 숫자 타입만 존재 |
원시 타입 | string | 문자열 |
원시 타입 | boolean | 논리적 참(true)과 거짓(false) |
원시 타입 | undefined | 아무 값도 할당받지 않은 상태 ,변수 선언시 초기화 되는값 |
원시 타입 | null | 타입값이 없다는 것을 의도적으로 명시할 때 사용하는 값 |
원시 타입 | symbol | 변경 불가능하고 중복되지않는 원시 타입의 값 |
참조 타입 | 객체, 함수, 배열 |
값을 저장할 때 확보해야 하는 메모리 공간의 크기를 결정하기 위해
메모리에서 읽어 들인 2진수를 어떻게 해석할지 결정하기 위해
C나 자바 같은 정적 타입언어는 변수를 선언할 때 데이터 타입을 사전에 선언해야 한다.
이를 명시적 타입 선언이라 한다.
정적 타입 언어는 변수의 타입을 변경할 수 없으며, 변수에 선언한 타입에 맞는 값만 할당할 수 있다. 정적 타입 언어는 컴파일 시점에서 타입 체크를 수행한다.
만약 타입 체크를 통과하지 못했다면 에러를 발생시키고 프로그램의 실행 자체를 막는다.
자바스크립트는 정적 타입 언어와 다르게 변수를 선언할 때 타입을 선언하지 않는다. 다만 var, let, const 키워들 사용해 변수를 선언할 뿐이다.
자바스크립트의 변수는 선언이 아닌 할당에 의해 타입이 결정 (타입 추론) 된다. 그리고 재할당에 의해 변수의 타입은 언제든지 동적으로 변할 수 있다.
이러한 특징을 동적 타이핑이라고 하며, 자바스크립트를 동적 타입 언어라고 한다.
자바스크립트의 모든 값은 타입이 있다. 값의 타입은 개발자의 의도에 따라 다른 타입으로 변환할 수 있다.
개발자가 의도적으로 값의 타입을 변환하는 것을 명시적 타입 변환 또는 타입 캐스팅이라 한다.
개발자의 의도와는 상관없이 표현식을 평가하는 도중에 자바스크립트 엔진에 의해 암묵적으로 타입이 자동 변환되기도 한다. 이를 암묵적 타입 변환 또는 강제 타입 변환이라 한다.