[모던자바스크립트] 6장 - 데이터 타입

Yongwoo Cho·2021년 11월 23일
0

TIL

목록 보기
25/98
post-thumbnail

데이터 타입이란?

데이터 타입이란 값의 종류를 말한다. 자바스크립트의 모든 값은 데이터 타입을 갖는다.

숫자 타입

C나 자바와 같은 언어와 달리 자바스크립트는 독특하게 하나의 숫자 타입만 존재한다. ECMA Script 사양에 따르면 숫자 타입의 값은 배정밀도 64비트 부동소수점 형식을 따른다. 즉, 모든 수를 실수로 처리한다

var integer = 10; // 정수
var double = 1.1; // 실수
var negative= -10; // 음의 정수
  • 숫자 타입의 세가지 특수 값
console.log(1/0); // Infinity
console.log(-1/0); // Infinity
console.log(1 * 'NotaNumber'); // NaN

문자열 타입

문자열 타입은 텍스트 데이터를 나타나는데 사용한다. 문자열은 작음따옴표, 큰따옴표, 또는 백틱으로 텍스트를 감싼다.

var str;
str = '문자열';
str = "문자열";
str = `문자열`;

❓ 다른 타입의 값과 달리 따옴표로 감싸는 이유는?
👉 키워드나 식별자 같은 토큰과 구분하기 위해서

템플릿 리터럴

ES6에 도입된 새로운 문자열 표기법
✔ 일반 문자열 표기법과의 차이점

  • 멀티라인 문자열 : 일반적인 문자열에서는 개행이 허용되지 않지만 템플릿 리터럴 표기법에서는 개행이 허용된다
  • 표현식 삽입 : 문자열 연산자인 + 없이도 ${표현식}형태로 사용이 가능
var x = 5;
var y = 18;
console.log("생일은 ${x}월 ${y}일 입니다."); // 생일은 5월 18일 입니다.

불리언 타입

불리언 타입의 값은 논리적 참/거짓을 나타내는 true와 false뿐이다.

undefined 타입

var 키워드로 선언한 변수는 암묵적으로 undefined로 초기화된다. 따라서 변수를 선언한 이후 값을 할당하지 않는 변수를 참조하면 undefined가 반환된다.

❌ 의도적으로 undefined를 변수에 할당하지 말자 ❌
👎 변수를 참조했을 때 undefined가 반환된다면 참조된 변수가 선언 이후 할당된 적이 없는, 즉 초기화 되지 않은 변수라는 것을 간파할 수 있는데 개발자가 의도적으로 변수에 할당한다면 본래 취지와 어긋날 뿐더러 혼란을 줄 수 있으므로 권장하지 않는다.
👍 변수에 값이 없다는 것을 명시하고 싶을때는 null을 할당한다.

null 타입

프로그래밍 언어에서 null은 변수에 값이 없다는 것을 의도적으로 명시할 때 사용한다. 변수에 null을 할당하는 것은 변수가 이전에 참조하던 값을 더 이상 참조하지 않겠다는 의미이다.

Symbol 타입

ES6에서 추가된 타입으로 변경 불가능한 원시 타입의 값이다. symbol 값은 다른 값과 중복되지 않는 유일무이한 값이다. 따라서 주로 이름이 충돌할 위험이 없는 객체의 유일한 프로퍼티 키를 만들기 위해 사용한다. 심벌은 Symbol 함수를 호출해 생성한다.

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

객체 타입

자바스크립트는 객체 기반의 언어이며, 자바스크립트를 이루고 있는 거의 모든 것이 객체라는 것이다. 위에서의 6가지 데이터 타입 이외의 값은 모두 객체 타입이다.

데이터 타입의 필요성

메모리 공간의 확보와 참조

✔ 값 저장

값을 저장하려면 먼저 확보해야 할 메모리 공간의 크기를 결정해야 한다. 자바스크립트 엔진은 데이터 타입, 즉 값의 종류에 따라 정해진 크기의 메모리 공간을 확보한다. 즉, 변수에 할당되는 값의 데이터 타입에 따라 확보해야 할 메모리 공간의 크기가 결정된다.

var integer = 100;

위 변수의 경우 자바스크립트 엔진은 리터럴 100을 숫자 타입의 값으로 해석하고 숫자 타입의 값 100을 저장하기 위해 8바이트의 메모리 공간을 확보한다.

✔ 값 참조

식별자 integer을 통해 숫자 타입의 값 100이 저장되어 있는 메모리 공간의 주소를 찾아갈 수 있다. 정확히는 메모리 공간의 선두 메모리 셀의 주소를 찾아갈 수 있다. 이때 값을 참조하려면 한 번에 읽어 들여야 할 메모리 공간의 크기, 즉 메모리 셀의 개수(바이트 수)를 알아야 한다. interger 변수의 경우, 저장되어 있는 값이 숫자 타입이므로 8바이트 단위로 읽어 들이지 않으면 값이 훼손된다.

값의 해석

위의 변수 integer 변수의 경우 메모리에서 읽어 들인 2진수를 어떻게 해석해야 하는지는 알 수 없다. 메모리에 저장된 값은 데이터타입에 따라 다르게 해석될 수 있다. 예를 들어, 메모리에 저장된 값 0100 0001을 숫자로 해석하면 65지만 문자열로 해석하면 'A'다. 앞에서 선언한 integer 변수에 할당된 값은 숫자 타입의 값이다. 따라서 메모리 공간의 주소에서 읽어 들인 2진수를 숫자로 해석한다.

📌 데이터 타입이 필요한 이유 요약정리

  • 값을 저장할 때 확보해야 하는 메모리 공간의 크기를 결정하기 위해
  • 값을 참조할 때 한번에 읽어 들여야 할 메모리 공간의 크기를 결정하기 위해
  • 메모리에서 읽어 들인 2진수를 어떻게 해석할지 결정하기 위해
profile
Frontend 개발자입니다 😎

0개의 댓글