[Deep Dive] 06장 데이터타입
자바스크립트는 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)를 같은 이름으로 묶어놓은 일종의 집합체.
- 자바스크립트를 이루고 있는 거의 모든 것이 객체.
데이터 타입의 필요성
- 메모리
- 메모리에 값을 저장하려면 공간을 확보해야함.
- 변수에 할당되는 값의 데이터 타입에 따라 확보해야 할 메모리 공간의 크기가 결정됨
- 값의 해석
- 데이터 타입에 따라 다르게 해석한다.(메모리에 저장된 이진수(값)을 문자열? 숫자?)
심벌 테이블
컴파일러 또는 인터프리터는 심벌테이블라고 부르는 자료 구조를 통해 식별자를 키로 바인딩된 값의 메모리 주소, 데이터 타입, 스코프 등을 관리한다.
- 값을 저장할 깨 확보해야 하는 메모리 공간의 크기를 결정.
- 값을 참조할 때 한번에 읽어야 할 메모리 공간의 크기를 결정.
- 메모리에서 읽어들인 2진수를 어떻게 해석할지 결정.
동적 타이핑
자바스크립트는 정적 타입 언어와 다르게 변수 선언시 타입을 지정하지 않는다. 대신 var
, const
, let
키워드를 사용해 변수 선언을 한다.
// c 언어
char c;
int num;
// javascript
var t1;
const t2;
let t3;
- 자바스크립트는 할당된 값에 의해 타입이 결정된다.
- 재할당에 의해 타입이 동적으로 변할 수 있다.
- 이런 언어를 동적 타입 언어라고 한다.
동적타입언어는 개발자의 의도와는 다른 변수타입을 제공할 수 있다. → 동적타입언어는 유연성은 높지만 신뢰성은 떨어진다.
이웅모 선생님의 모던 자바스크립트 Deep Dive를 공부하기 위해 정리한 글입니다.
혹시나 보시다가 고칠 부분이나 마음에 안드시는 부분이 있다면 말씀해주시면 감사하겠습니다!