24. 데이터 타입

May 24, 2023

데이터 타입

1. 원시 타입

1. 숫자 타입

var integer = 10; // 정수
var double = 10.12; // 실수
var negative = -20; // 음의 정수

var binary = 0b01000001;
var octal = 0o101;
var hex = 0x41;
  • 숫자 타입은 모두 실수로 처리된다.
  • 세 가지 특별한 값
    • Infinity: 양의 무한대
    • -Infinity: 음의 무한대
    • NaN: 산술 연산 불가

2. 문자열 타입

작은 따옴표(‘’), 큰 따옴표(“”), 백틱(``)으로 감싸는 텍스트

템플릿 리터럴

백틱을 이용한 문자열 표기법

var template = `Template Literal`;
  • 템플릿 리터럴 내에서는 이스케이프 문자 없이도 줄바꿈이 허용되며 모든 공백도 있는 그대로 적용된다.
  • 템플릿 리터럴 내에서는 표현식을 삽입할 수 있다. ${} 이용

3. 불리언 타입

논리적 참(true), 거짓(false)

4. undefined 타입

undefined 타입의 값은 undefined 뿐!

개발자가 의도적으로 할당하기 위한 값이 아닌 자바스크립트 엔진이 변수를 초기화할 때 사용하는 값이다.

5. null 타입

null 타입의 값도 null 뿐!

변수에 값이 없다는 것을 “의도적으로” 명시할 때 사용한다.

6. 심벌 타입

ES6에 추가된 새로운 타입

다른 값과 절대 중복되지 않는 유일무이한 변경 불가능한 원시 값

Symbol 함수를 호출하여 생성한다.

var key = Symbol("key");
console.log(typeof key); // symbol

2. 객체 타입

원시 타입이 아닌 데이터 타입

자바스크립트를 이루고 있는 모든 것이 객체이다.

3. 데이터 타입의 필요성

1. 데이터 타입에 의한 메모리 공간의 확보와 참조

메모리에 값을 저장하기 위해서는 먼저 확보해야 할 메모리 공간의 크기를 결정해야 한다. 자바스크립트 엔진은 데이터 타입에 따라 정해진 크기의 메모리 공간을 확보한다.

자바스크립트는 문자열과 숫자 타입을 제외하고 나머지 데이터 타입의 크기를 명시적으로 규정하고 있지 않다. 따라서 자바스크립트 엔진 제조사마다 다를 수 있다.

값을 참조할 때, 값의 데이터 타입을 인식하여 그에 맞는 메모리 크기대로 읽어 값을 참조한다.

ex) score 변수에 숫자 값이 저장된 경우 → 숫자 타입 인식 → 8바이트 참조

2. 데이터 타입에 의한 값의 해석

메모리에 저장된 값 0100 0001을 어떻게 해석할 지 결정하기 위해 사용된다. 이 값은 숫자로 해석하면 65이고 문자열로 해석하면 ‘A’이다.

4. 동적 타이핑

1. 동적 타입 언어와 정적 타입 언어

C나 자바 같은 정적 타입 언어는 변수를 선언할 때 데이터 타입을 사전에 선언해야 한다. 정적 타입 언어는 변수의 타입을 변경할 수 없고 선언한 타입에 맞는 값만 할당할 수 있다. 정적 타입 언어는 컴파일 시점에 타입 체크를 수행한다. 이를 통해 런타임 시점에 오류가 발생하는 것을 막는다.

자바스크립트는 변수를 선언할 때 타입을 선언하지 않는다. 그리고 어떠한 데이터 타입의 값이라도 자유롭게 할당할 수 있다. 자바스크립트의 변수는 선언이 아닌 할당에 의해 타입이 결정(타입 추론)된다. 이러한 특징을 동적 타이핑이라 하며 자바스크립트를 동적 타입 언어라 한다.

2. 동적 타입 언어의 위험성

변수 값이 언제든지 변경될 수 있기 때문에 복잡한 프로그램에서는 변수 값을 추적하기 어려울 수 있다.

또한 자바스크립트 엔진에 의해 암묵적으로 타입이 자동 변환되기도 한다.

따라서 동적 타입 언어는 유연성은 높지만 신뢰성은 떨어진다.


Profile picture

김미소 Miso Kim
Junior frontend developer
Github