프로그래밍 언어에서 자료형(types) 또는 데이터 타입(data type) 이란 숫자형(정수형, 실수형), 논리값(Boolean), 문자(String) 등의 데이터를 식별하는 분류 (indentifier) 로서, 해당 자료형에 대한 가능한 값, 해당 자료형에서 수행을 마칠 수 있는 명령들, 데이터의 의미, 값의 저장하는 방식을 결정한다.
이렇듯 자료형이란 개발자가 특정 기능 또는 함수 내에서 어떤 형태의 데이터를 다룰 것이며 이를 통해 가능한 작업은 어떤 것인지 정의할 수 있는 역할을 한다. 그렇다면 Javascript의 데이터 타입(Type)에는 무엇이 있을까?
프로그래밍에서의 자료
자료형의 구성
- 변수들이 가질 수 있는 값의 범위/크기 및 연산 가능한 형태와 규칙
- 값의
집합/범위/크기
및 이 값에 적용가능한연산
에 따라 다르게 규정
자료형의 구분
- 원시형 또는 기본형 (Primitive Type) 또는 내장 자료형 (Built-in Type)
- 시스템/컴파일러/인터프리터 등이 직접 제공 및 직접 해석 가능한 데이터 타입
- 정수 및 실수형, 논리값(Boolean), 문자형(String) 등 단순한 구조의 타입
- 파생 자료형 (Derived Type)
- 원시형 또는 타 유형의 데이터로부터 또는 개발자에 의해 유도된 구조화된 데이터 타입
- 문자열, 배열, 레코드, 리스트 등의 데이터 타입
- 참조형 (Reference Type)
- 변수 선언과 메모리 생성이 분리되는 데이터 타입
- 배열 참조형, 클래스 참조형 등의 데이터 타입
- 원시형 또는 기본형 (Primitive Type) 또는 내장 자료형 (Built-in Type)
정적 타입 언어 vs 동적 타입 언어
Javascript 개발자라면 모두들 변수의 type에 의해 힘들었던 경험들이 있었을 것이다. Java 개발자인 친구 또한 Javascript를 공부하면서 변수의 특성에 대해 “형 지정도 없고, 됐다고 해도 쉽게 바뀐다.”라는 의미에서 약간 변태 같다고 했었다… 그렇다면 이러한 성질을 뭐라고 할까?
- 정적 타입 언어와 동적 타입 언어의 차이는 데이터 타입 결정하는 시기 라고 할 수 있다.
- 정적 언어:
컴파일
시에 결정.- C, C#, C++, Java 등의 언어가 있음
- 장점:
- 컴파일 시 타입에 대한 정보를 결정하기 때문에 런타임 시 속도가 빠름
- 컴파일 시 타입에 대한 검증을 하기 때문에 타입 안정성 높음
- 단점
- 변수의 타입이 이미 컴파일 이전에 정해지기 때문에 변수의 활용성이 떨어짐
- 동적 언어:
런타임(실행)
시에 결정- Perl, Ruby, Python, PHP, JavaScript 등의 언어가 있음
- 장점:
- 런타임 시 까지 변수의 타입을 선언하지 않아도 되 활용 유연성이 높음
- 개발자 입장에서 변수의 타입 선언 걱정없이 빠르게 구현 및 이용 가능
- 단점
- 예상치 못한 타입이 지정되어
TypeError
또는 예상치 못한 처리에러가 날 수 있음
- 예상치 못한 타입이 지정되어