데이터 타입 (기본형과 참조형)

Primitive type (기본형)

- Number

- String

- Boolean
- null

- undefined
- (ES6) Symbol

 

Reference type (참조형)

- 대표적으로 Object(객체)가 있고, 그 하위에 

- Array(배열)

- Function(함수)

- RegExp(정규표현식) 

- (ES6) Set / WeakSet

- (ES6) Map / WeakMap

 

기본형과 참조형의 차이점은 각 데이터가 메모리 상에서 저장되는 형태의 차이점이 있다. 

 

실제 자바스크립트의 메모리 구조 2종류

 

stack memory

- 변수와 함께 기본형 데이터가 저장된다

 

heap memory

- 참조형 데이터가 저장된다

 

** 추상화 시킨 메모리라는 정의 아래에 설명된 내용임

------

표는 메모리이다. 메모리가 각각 하나의 셀에 주소(1001,1002 ... )가 있는 것임. 

var a; 선언 시 , 데이터가 담길 공간을 확보함. 주소는 랜덤으로. 임의로 1003에 저장

a = 'abc'; 비어있는 다른 메모리 공간에 저장. 임의로 5004에 저장

변수 a의 공간

인 1003에 있는 값에 @5004를 넣는다. 

그 이후에

a = 'abcderf';를 다시 저장한다면 5004가 아닌 다른 공간(임의로 5005)에 다시 저장하여 1003에값을 5005로 바꿈

 

 

-------참조형 변수

둘이 같다는 것을 우리는 알고 있지만, 컴퓨터가 처리하는 순서 방식이 다르다. 

 

1. 임의의 공간 1002에 obj 변수 저장

2. obj 안에 a,b 2개의 값을 한 공간에 넣을 수 없기 때문에 a,b 공동의 임의 공간 @5002에 두개의 값이 들어갈 주소(@7103~?)을 저장 (= 전부 7103 객체의 프로퍼티야 " 라고 저장한다. 

3. a프로퍼티 주소는 @7103에, b 프로퍼티 주소는 @7104이다.   

4.  a의 값인 1은 @5003에 저장되고, 'bbb'는@5004에 저장된다.

5. @5003, @5004는 7103,7104에 저장하게 된다.