JS스터디 2회차: Data Type

dev_sang·2022년 5월 19일
0
post-thumbnail

들어가기 전에

이 포스팅은 아래 출처를 바탕으로 작성되었습니다.
https://github.com/junh0328/prepare_frontend_interview


Data Type

  • 데이터 타입의 종류는 어떤 것들이 있나요? ⭐️
  • Symbol 타입은 뭐죠?
  • 데이터 타입은 왜 필요할까요? ⭐️
  • 정적 타이핑이 뭔가요?
  • 동적 타이핑이 뭔가요?

JS의 Data Type의 종류

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

Symbol 타입이란?

  • Symbol은 ES6에서 추가된 7번째 데이터 타입입니다.
  • Symbol은 다른 값과 중복되지 않는 유일무이한 값입니다. 여러 개의 Symbol값을 생성할 경우 모두 다른 존재로 인식이 됩니다.
  • 주로 객체의 프로퍼티 key를 만들 때, 객체 안에서 key가 중복되어 충돌하는 것을 막기 위하여 심볼을 사용합니다.
  • 객체에 같은 key 이름에 값을 추가하더라도 symbol을 다른 존재로 인식하기 때문에 충돌할 위험이 없습니다.
const a = Symbol();
const b = Symbol();

console.log(a); 	  // Symbol()
console.log(b); 	  // Symbol()
console.log(a == b);  // false
console.log(a === b); // false

//  Symbol만들 때 설명을 붙여줄 수 있다. (설명 붙여주면 디버깅 시 편하다.)
// ()안에 같은 설명을 넣어도 다른 심볼 값이다.
const id = Symbol("id");
console.log(id); 	  // Symbol(id)

// 심볼을 객체의 키로 사용하보자.
const user = {
  name: "Mike",
  age: 30,
  [id]: "myId",
};

console.log(user); // { name: 'Mike', age: 30, [Symbol(id)]: 'myId' }

데이터 타입은 왜 필요할까요?

  1. 변수의 값을 저장할 때
    • 변수에 값을 저장할 때 몇 byte의 메모리 공간을 사용해야 효율적으로 값을 저장할 수 있을 지 파악한다.
    • 이때 데이터 타입에 따라 확보해야 할 메모리 공간의 크기가 결정된다.
  2. 값을 참조할 때
    • 값을 참조할 때 몇 byte단위로 메모리를 읽어들일 지 파악한다.
    • 이때 한번에 읽어들일 메모리 공간의 크기를 알기 위해 데이터타입이 필요하다.
  3. 값을 사용할 때
    • 값을 사용하려고 할 때 2진수로 저장되있는 값을 어떤 데이터타입으로 해석할 지 결정하기 위해 데이터타입이 필요하다.

정적타이핑(Static Typing) 이란?

  • 대표적인 정적 타입 언어: C, C++, 자바, 코틀린, 고, 러스트 등
  • 변수를 선언할 때 데이터 타입을 지정하는 것을 말합니다. (= 명시적 타입 선언)
  • 한번 타입이 정해진 변수는 다른 타입의 값을 넣을 수 없습니다.
  • 컴파일할 때에 타입체크를 수행하여 이를 통과하지 못하면 컴파일 에러가 발생하고 프로그램 실행이 안됩니다.
  • 컴파일 당시에 자료형에 대한 판단을 진행하기 때문에 속도가 빠르며, 타입 에러로 발생하는 문제점을 초기에 발견할 수 있는 장점이 있습니다.
char c;
// 변수 c: 1byte 정수 타입의 값(-128 ~ 127)만 할당할 수 있다.

int num;
// 변수 num: 4byte 정수 타입의 값(-2,124,483,648 ~ 2,124,483,647)만 할당할 수 있다.

동적 타이핑(Dynamic Typing)이란?

  • 변수를 선언할 때가 아니라 변수에 값을 할당할 때 데이터 타입이 결정됩니다. (변수를 선언할 때는 데이터 타입이 결정되지 않는다.)
  • 변수에 값을 재할당하면서 데이터 타입이 언제든 지 바뀔 수 있습니다. ('동적으로 바뀐다'고 한다.) - 이때 변수에 값을 할당하면서 데이터 타입을 결정하는 것을 '타입 추론'이라고 합니다.
  • 대표적인 동적 타이핑 언어로 JavaScript와 Python이 있습니다.
var foo;
console.log(typeof foo);// undefined 데이터 타입 결정되있지 않음

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

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

foo = Symbol();// 심벌console.log(typeof foo);// symbol

foo = {};// 객체console.log(typeof foo);// object

foo = [];// 배열console.log(typeof foo);// object

foo = function () {};// 함수console.log(typeof foo);// function

Reference

profile
There is no reason for not trying.

0개의 댓글