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

일단해봐·2023년 7월 13일
0
post-thumbnail

💻 6장 데이터 타입


1️⃣ 요약

데이터타입(줄여서 ‘타입’이라고도 한다.)은 값의 종류를 말한다. 자바스크립트(ES6)는 7개의 데이터 타입을 제공한다. 그리고 자바스크립트의 변수는 선언이 아닌 할당에 의해 타입이 결정(타입 추론)된다.


2️⃣ 정리

📌 6.1 숫자 타입

자바스크립트는 C나 자바와 달리 정수와 실수를 구분해서 init, long, float, double 등과 같은 다양한 숫자 타입을 제공하지 않고 하나의 숫자 타입만 존재한다.

  • 2진수, 8진수 16진수를 표현하기 위한 데이터 타입을 제공하지 않기 때문에 이들 값을 참조하면 모두 10진수로 해석한다.
var bianary = 0b01000001; // 2진수
var octal = 0o101;        // 8진수
var hex = 0x41;           // 16진수

// 표기법만 다를 뿐 모두 같은 값이다.
console.log(binary); // 65
console.log(octal); // 65
console.log(hex); // 65
console.log(binary === octal); // true
console.log(octal === hex); // true
  • 숫자 타입은 모두 실수로 처리된다.
console.log(1 === 1.0); // true
  • 숫자 타입의 3가지 특별한 값
console.log(10 / 0); // Infinity
console.log(10 / -0); // -Infinity
console.log(1 * 'String'); // NaN

📌 6.2 문자열 타입

문자열은 작은따옴표(’’), 큰따옴표(””), 백틱(``)으로 텍스트를 감싼다.

  • 따옴표로 감싸지 않은 문자는 식별자로 인식한다.
var string = hello; // ReferenceError: hello is not defined

📌 6.3 템플릿 리터럴

템플릿 리터럴은 멀티라인 문자열, 표현식 삽입, 태그드 문자열 등 편리한 문자열 처리 기능을 제공한다. 템플릿 리터럴은 백틱(``)을 사용해 표현한다

var first = 'Ung-mo';
var last = 'Lee';

console.log('My name is' + first + ' ' + last + '.'); // My name is Ung-mo Lee.

console.log(`My name is ${first} ${last}.`);          // My name is Ung-mo Lee.
  • 일반 문자열 내에서는 줄바꿈(개행)이 허용되지 않아 이스케이프 시퀀스를 사용한다.
var str = `Hello
world.;
//SyntaxError: Invalid or unexpected token

  • 표현식을 삽입하려면 ${}으로 표현식을 삽입한다.
var first = 'Ung-mo';
var last = 'Lee';

// ES6: 표현식 삽입
console.log(`My name is ${first} ${last}.`); // My name is Ung-mo Lee.

📌 6.4 불리언 타입

논리적 참, 거짓을 나타내는 true, false 값을 말한다.


📌 6.5 undefined 타입

undefined 타입의 값은 undefined가 유일하다. var 키워드를 선언한 변수는 암묵적으로 undefined로 초기화된다.


📌 6.6 null 타입

null 타입은 null이 유일하다. 자바스크립트는 대소문자를 구분하므로 null은 Null, NULL 등과 다르다.


📌 6.7 심벌 타입

변경 불가능한 원시 타입의 값이다. 심벌 값은 다른 값과 중복되지 않는 유일무이한 값이다.


📌 6.8 객체 타입

자바스크립트는 객체 기반의 언어이며, 자바스크립트를 이루고 있는 거의 모든 것이 객체라는 것이다.


📌 6.9 데이터 타입의 필요성

값은 메모리에 저장하고 참조할 수 있어야 하는데 메모리에 값을 저장하려면 먼저 확보해야 할 메모리 공간의 크기를 결정해야 한다. 이 과정에서 데이터 타입이 설정 되어야 메모리 공간 낭비와 손실 없이 값을 저장할 수 있는지 알 수 있다. 또한 참조하는 과정에서 데이터 타입을 알아야 훼손되지 않은 값을 얻을 수 있다.

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

📌 6.10 동적 타이핑

자바스크립트의 변수는 선언이 아닌 할당에 의해 타입이 결정(타입 추론)된다. 그리고 재할당에 의해 변수의 타입은 언제든지 동적으로 변할 수 있다. 이러한 특징을 동적 타이핑이라하며 이러한 언어를 동적 타입 언어라 한다.

var foo;
console.log(typeof foo);  // undefined

foo = 3;
console.log(typeof foo);  // number

foo = 'Hello';
console.log(typeof foo);  // string

foo = true;
console.log(typeof foo);  // boolean

foo = null;
console.log(typeof foo);  // object

foo = Symbol();
console.log(typeof foo);  // symbol
  • 동적 타입 언어는 유연성이 높지만 신뢰성이 떨어진다는 단점이 있다.

3️⃣ 마무리

동적 타입 언어 자바스크립트에 대해 공부하며 TypeScript의 유용성이 궁금해지기 시작했다. 머지 않아 TypeScript를 공부하게 될 텐데 타입 선언의 중요성을 인지하며 공부를 해야겠다.

profile
안녕하세요, 프론트엔드 개발자가 될 열정적인 사람입니다.

0개의 댓글