데이터 타입
자바스크립트의 모든 값은 데이터 타입을 갖는다.
자바스크립트(ES6)는 7개의 데이터 타입을 제공한다.
원시타입 (primitive type)
- 숫자(number): 숫자, 정수와 실수 구분없이 하나의 숫자 타입만 존재
- 문자열(string): 문자열
- 불리언(boolean): 논리적 true, false
- undefined: var 키워드로 선언된 변수에 암묵적으로 할당되는 값
- null: 값이 없다는 것을 의도적으로 명시할 때 사용하는 값
- symbol: 이름의 충돌 위험이 없는 객체의 유일한 프로퍼티 키를 만들기 위해 사용
객체타입 (object/reference type)
- 객체, 함수, 배열 등
number type
모두 실수로 처리
Infinity, -Infinity, NaN (not-a-number)
string type
따움표로 텍스트를 감싼다. (키워드나 식별자와 같은 토큰과 구분하기 위해)
템플릿 리터럴
ES6부터 새로 도입된 문자열 표기법
런타임에 일반 문자열로 변환되어 처리된다.
따옴표 대신 백틱(`)을 사용한다.
boolean type
논리적 참, 거짓을 나타내는 true, false
undefined type
선언 이후 명시적으로 값을 할당하지 않는 변수는 자바스크립트 엔진의 암묵적 초기화에 의해 undefined 값을 가진다.
선언은 되었지만 아직 값을 할당하지 않는 변수에 접근하면 undefined가 반환
null type
변수에 값이 없다는 것을 의도적으로 명시할 때 사용
(의도적 부재 intentional absence)변수가 이전에 참조하던 값을 더이상 참조하지 않겠다는 뜻
symbol type (ES6에 추가)
주로 이름의 충돌 위험이 없는 객체의 유일한 프로퍼티 키(property key)를 만들기 위해 사용한다.
프로퍼티 키(property key)란?생성된 심볼 값은 노출되지 않으며 다른 값과 절대 중복되지 않는 값이다.
object type
- 다양한 타입의 값들을 하나의 단위로 구성한 복합적인 자료 구조(Data structure)이다.
- 객체는 변경 가능한 값(mutable value)이다.
데이터 타입의 필요성
- 데이터 타입이 필요한 이유
- 값을 저장할 때 확보해야 하는 메모리 공간의 크기를 결정하기 위해
- 값을 참조할 떄 한번에 읽어들여야할 메모리 공간의 크기를 결정하기 위해
- 메모리에서 읽어 들인 2진수를 어떻게 해석할 지를 결정하기 위해