데이터 타입-1 (feat. 코어 자바스크립트)

고규식·2021년 12월 7일
5
post-thumbnail

1. 데이터 타입의 종류

🔥 기본형 (primitive type)

  1. 숫자
  2. 문자열
  3. 불리언
  4. null
  5. undefined

🔥 참조형 (reference type)

객체(Object)안에

  1. 배열
  2. 함수
  3. 날짜
  4. Map
  5. WeakMap
  6. Set
  7. WeakSet

🔥 기본형과 참조형을 구분하는 기준!?

기본형은 값이 담긴 주솟값을 바로 복제하는 반면
참조형은 값이 담긴 주솟값들로 이루어진 묶음을 가리키는 주솟값을 복제한다는 점이 다릅니다.


2. 데이터 타입에 관한 배경지식.

🔥 메모리와 데이터

비트(bit) : 0또는 1만 표현할 수 있는 하나의 메모리 조각.
바이트(byte) : 비트를 한단위로 묶음

1byte = 8bit

모든데이터는 바이트 단위의 식별자, 메모리 주솟값(memory address)을 통해 서로 구분하고 연결 짓는다.

🔥 식별자와 변수

변수 : 변할 수 있는 무언가 (데이터)
식별자 : 어떤 데이터를 식별하는데 사용하는 이름 (변수명)


3. 변수 선언과 데이터 할당.

🔥 변수 선언

var a; // 메모리에서 비어있는 공간 하나를 확보하고, 이 공간의 이름을 a라고 지정한다.

⭐️ 메모리에서 비어있는 공간 하나를 확보하고, 이 공간의 이름을 a라고 지정한다. 여기서 a는 식별자.

🔥 데이터 할당

var a; // 메모리에서 비어있는 공간 하나를 확보하고, 이 공간의 이름을 a라고 지정한다.
a = 'abc';
//or
var a = 'abc';

⭐️ 실제로는 문자열 'abc'를 값 영역에 직접 저장하지 않고,
데이터를 저장하기 위한 별도의 메모리 공간을 다시 확보해서 문자열 'abc'를 저장하고, 그 주소를 변수영역에 저장한다.

  1. 변수 영역에서 빈 공간(@1003)을 확보한다.
  2. 확보한 공간의 식별자를 a로 지정한다.
  3. 데이터 영역의 빈 공간(@5004)에 문자열 'abc'를 저장한다.
  4. 변수 영역에서 a라는 식별자를 검색한다.(@1003).
  5. 앞서 저장한 문자열의 주소(@5004)를 @1003의 공간에 대입한다.

변수 영역에 값을 직접 대입하지 않는 이유 : 데이터 변환을 자유롭게 할 수 있게 함과 동시에 메모리를 더욱 효율적으로 관리하기 위해서,

✅ 문자열 변환에 대한 메모리 영역의 변화

var a = 'abc'; // "abc"의 마지막에 "def"를 추가하시오!
a = 'abcdef'; // 어떤 과정이 일어날까?

기존에 'abc'가 저장된 공간에 'abcdef'를 할당하는게 아니라 새로운'abcdef'라는 값을 새로 만들어서 별도의 공간에 저장하고, 그 주소를 변수 공간에 연결합니다.

문자열 변환시 무조건 새로운 값을 만들어 새로운 공간에 저장후 그 주소를 기존 변수영역에 저장해준다.

✅ 변수 영역과 데이터 영역을 분리한 이유!

효율적으로 문자열 데이터의 변환을 처리하려면 변수와 데이터를 별도의 공간에 나누어 저장하는 것이 최적이다.
특히 중복된 데이터에 대한 처리 효율이 높아진다.
ex) 500개의 변수를 생성해서 모든 변수에 숫자 5를 할당하는 상황!

  • 숫자 5는 별도의 공간에 한번 저장.
profile
잠실사는 주니어 개발자

0개의 댓글