본문 바로가기

Javascript

데이터 타입&메모리_v3.1

✅ 데이터 타입의 종류(기본형과 참조형)

(이미지 출처 : https://velog.io/@imjkim49/자바스크립트-데이터-타입-정리 )

자바스크립트에서 값의 타입은 크게 기본형(Primitive Type)과 참조형(Reference Type)으로 구분됩니다. 기본형과 참조형의 구분 기준은 **값의 저장 방식과, 불변성 여부**입니다.

 

 💡 [기본형과 참조형의 구분 기준]

  1. 복제의 방식
    1. 기본형 : 값이 담긴 주소값을 바로 복제
    2. 참조형 : 값이 담긴 주소값들로 이루어진 묶음을 가리키는 주소값을 복제
  2. 불변성의 여부
    1. 기본형 : 불변성을 띔(=불변하다) // var a = 6; a = 'abc';(?) (메모리관점에서 불변)
    2. 참조형 : 불변성을 띄지 않음

자, “불변성을 띈다” 이 말을 이해하기 위해서 우리는 메모리와 데이터에 대한 내용을 이해해야만 합니다. 아래에서 그 배경지식을 낱낱이 살펴보기로 합시다 😎

 

(2) 메모리와 데이터에 관한 배경지식

  1. 메모리, 데이터
    1. 비트(0, 1)
      1. 컴퓨터가 이해할 수 있는 가장 작은 단위
      2. 0과 1을 가지고 있는 메모리를 구성하기 위한 작은 조각을 의미한다고 보면 될 것 같아요!
      3. 이 작은 조각들이 모여서 여러분들이 흔히 들으시는 **‘메모리’**가 만들어지는 것이죠.

 

    1. 바이트
      1. 0과 1만 표현하는 비트를 모두 찾기는 부담
      2. 1개 → 2개 → … → 8개(새로운 단위 : byte)(이미지 출처 : https://namu.wiki/w/바이트)
      3.  
    2. 메모리(memo + ry) : byte 단위로 구성
      1. 모든 데이터는 byte 단위의 식별자인 메모리 주소값을 통해서 서로 구분이 됩니다.
      <aside> 💡 만일, 64비트(8바이트) 정수는 메모리에 어떻게 저장할 수 있을까요? ⇒ 64비트를 8개의 바이트로 분할하고, 각 바이트를 메모리에 저장해야 해요. 각 바이트는 8개의 비트를 가므로 64비트 정수는 메모리에서 8개의 연속된 바이트에 저장된답니다.
    3. </aside>
    4. java, c와 다른 javascript의 메모리 관리 방식(feat. 정수형)
      1. 8을 저장하는 방법
        1. JS : let a = 8(8byte)
        2. JAVA
          1. byte a = 8(1byte)
          2. short a = 8(2byte)
          3. int a = 8(4byte)
          4. long a = 8(16byte) 
      2. java 또는 c언어가 초기에 등장했을 때 숫자 데이터 타입은 크기에 따라 다양하게 지정해줘야 할 만큼 개발자가 handling 할 요소들이 많았어요. 하지만 javascript는 이런 부분에서는 상당히 편리하죠. 메모리 이슈까지는 고민하지 않아도 되니까요 😎
  1. 식별자, 변수
    1. var testValue(식별자) = 3(변수)
    2. 변수 = 데이터
    3. 식별자 = 변수명