반응형
1. 자바스크립트 데이터 타입
1.1 Primitive Type(기본형)
- 기본형 변수의 메모리 할당
(1) var a 선언. 메모리(주소/데이터)에서 데이터에 이름 a 지정
(2) 'abc'를 비어있는 임의의 다른 공간의 메모리(주소/데이터) 할당.
(3) 'abc'의 주소를 들고 'a'가 할당된 곳을 찾아가서 값에 '@abc의 주소'를 넣음.
(4) a = 'abc' 문자열 'abc'를 a에 할당하라
(5) var a를 선언하면 컴퓨터가 하는 일은 데이터가 담길 임의의 공간을 확보함
(6) a = 'abcd' 문자열을 넣으면 'abc'를 수정할 것같지만, 컴퓨터는 그렇게 하지않음
(7) 임의의 공간을 다시 할당하여 'abcd' 값을 넣음
(8) 다시 'abcd'의 주소값을 들고 'a'가 할당된 공간을 찾음.
(9) a의 값을 '@abcd'의 주소로 바꿈 - Number
- String
- Boolean
- null
- undefined
- Symbol
1.2 Reference Type(참조형) - Object
- 참조형 변수의 메모리 할당
(1) var obj = { a : 1, b : 'bbb' }; 선언. var obj에 대한 선언이 먼저 이루어지는것.
(2) obj에 대한 임의의 공간에 할당이 일어나고 거기의 이름을 obj 로 저장
(3) {..} 안에 여러개의 프로퍼티가 있으므로 임의의 공간에 그 프로퍼티의 주소에 대한 범위를 지정
(4) 배정된 주소에 프로퍼티 하나 하나씩 할당('값 : @a의주소 ~ @b의주소')
(5) a 프로퍼티에 대한 할당은 기본형과 동일. (값: 1) -> (이름: a 값: @'1의주소')
(6) b 프로퍼티에 대한 할당은 기본형과 동일. (값: 'bbb') -> (이름: b 값: @'bbb의주소')
- 기본형에 비해 참조형이 메모리할당과정을 1번 더 거침.
- 이미 선언된 값이 있으면, 새로 만들지 않고 그 값의 주소를 사용함.
- 참조카운트가 0인 메모리는 가비지컬렉터의 수집대상으로 사라짐. - Array
- Function
- RegExp
- Set/WeakSet
- Map/WeakMap
2. 자바스크립트 메모리 구조
2.1 Stack memory
- 변수 저장
- 기본형 데이터 저장
- 정적할당
2.2 Heap memory
- 참조형 데이터 저장
- 동적할당
2.3 값의 주소를 저장하는 이유
값을 직접 저장 | 값의 주소를 저장 |
데이터 할당시에는 빠름 | 데이터 할당시에는 느림 |
비교에는 비용이 많이 듦 | 비교에 비용이 들지 않음 |
메모리 낭비가 심함 | 메모리 낭비 최소화 |
-> 같은 값이 전체 메모리 공간상에 오직 하나만 존재 = 불변값
반응형
'JavaScript +HTML5 + CSS3' 카테고리의 다른 글
[Core JavaScript] 3. this (0) | 2021.08.29 |
---|---|
[Core JavaScript] 2. Execution context (0) | 2021.08.29 |
[JQuery] Ajax (0) | 2021.08.16 |
[JQuery] 선택자(Selector) (0) | 2021.08.16 |
[JQuery] 제이쿼리 (0) | 2021.08.16 |