2 분 소요


자바스크립트는 7개의 데이터 타입을 제공한다.

구분 데이터 타입 설명
원시타입 숫자 타입 숫자, 정수와 실수 구분 없이 하나의 숫자 타입만 존재
원시타입 문자열 타입 문자열
원시타입 불리언 타입 논리적 참(true), 거짓(false)
원시타입 undefined 타입 var 키워드로 선언된 변수에 암묵적으로 할당되는 값
원시타입 null 타입 값이 없다는 것을 의도적으로 명시할 때 사용하는 값
원시타입 심벌 타입 ES6에서 추가된 7번째 타입
객체타입 객체 타입 객체, 함수, 배열 등


1. 숫자 타입


  • 자바스크립트의 숫자 타입은 모두 실수로 처리함.
  • 메모리에 저장될때 2진수로 저장됨.
  • 값을 참조할때 모두 10진수로 해석됨.

* 숫자타입의 특별한 세가지
- Infinity: 양의 무한대
- -Infinity: 음의 무한대
- NaN: 산술 연산 불가


2. 문자열 타입


  • 문자열은 0개 이상의 16비트 유니코드 문자(UTF-16)의 집합.
  • 작은따옴표(' '), 큰따옴표(" "), 백틱(` `)으로 표현.
  • 문자열은 불변값임(연산시 새로운 값을 할당한 후 참조주소를 변경)


템플릿 리터럴

ES6부터 템플릿 리터럴이라는 새로운 문자열 표기법 도입.

  • 백틱(``)을 사용해 멀티라인 문자열 가능
const jongbin = `hello
I'm jongbin`;

// 출력결과
// hello
// I'm jongbin


  • 표현식 삽입 (${}를 사용해서 표현식을 삽입한다.)
const jongbin = `I',m ${20+6} years old`; 

// 출력결과
// I'm 26 years old


3. 불리언 타입


불리언 타입은 true, false값 두가지가 있다.


4. undefined 타입


undefined은 값을 할당하지 않은 변수를 참조했을때 반환된다.

선언만 하고 값을 할당하지 않은 변수를을 undefined로 초기화한다.


5. null 타입


null은 변수에 값이 없음을 의도적으로 명시할 때 사용한다.

이전의 값의 참조를 명시적으로 제거할 때 사용


6. 심벌 타입


  • 변경불가능한 원시타입의 값
  • 다른 값과 중복되지 않는 유일한 값


7. 객체 타입


  • 자바스크립트의 기본 타입은 객체(object).
  • 객체란 실생활에서 우리가 인식할 수 있는 사물로 볼 수 있다.
  • 객체는 여러 프로퍼티(property)나 메소드(method)를 같은 이름으로 묶어놓은 일종의 집합체.
  • 자바스크립트를 이루고 있는 거의 모든 것이 객체.


데이터 타입의 필요성


  1. 메모리
    • 메모리에 값을 저장하려면 공간을 확보해야함.
    • 변수에 할당되는 값의 데이터 타입에 따라 확보해야 할 메모리 공간의 크기가 결정됨

  2. 값의 해석
    • 데이터 타입에 따라 다르게 해석한다.(메모리에 저장된 이진수(값)을 문자열? 숫자?)

심벌 테이블
컴파일러 또는 인터프리터는 심벌테이블라고 부르는 자료 구조를 통해 식별자를 키로 바인딩된 값의 메모리 주소, 데이터 타입, 스코프 등을 관리한다.

  • 값을 저장할 깨 확보해야 하는 메모리 공간의 크기를 결정.
  • 값을 참조할 때 한번에 읽어야 할 메모리 공간의 크기를 결정.
  • 메모리에서 읽어들인 2진수를 어떻게 해석할지 결정.


동적 타이핑


자바스크립트는 정적 타입 언어와 다르게 변수 선언시 타입을 지정하지 않는다. 대신 var, const, let 키워드를 사용해 변수 선언을 한다.

// c 언어
char c;
int num;
// javascript
var t1;
const t2;
let t3;


  • 자바스크립트는 할당된 값에 의해 타입이 결정된다.
  • 재할당에 의해 타입이 동적으로 변할 수 있다.
  • 이런 언어를 동적 타입 언어라고 한다.

동적타입언어는 개발자의 의도와는 다른 변수타입을 제공할 수 있다. → 동적타입언어는 유연성은 높지만 신뢰성은 떨어진다.



이웅모 선생님의 모던 자바스크립트 Deep Dive를 공부하기 위해 정리한 글입니다.
혹시나 보시다가 고칠 부분이나 마음에 안드시는 부분이 있다면 말씀해주시면 감사하겠습니다!