자바스크립트 입문_가변값
자바스크립트 2021. 5. 3. 13:31(본 포스팅은 위키북스의 '코어자바스크립트' 책을 공부하면서 작성되었습니다_내돈내산)
- 대부분의 참조형 데이터가 가변값임.
- 참조형 데이터를 할당하는 경우는 아래처럼 이루어지게 됨.
var obj1 = {
a : 1, b : 'bbb',
};
1) 변수영역의 빈공간을 확보하고 그 주소의 이름을 obj1 로 지정
2) 임의의 데이터 저장공간에 데이터를 저장하려고 보니 여러개의 프로퍼티로 이뤄진 데이터 그룹이라 별도의 변수영역을 마련하고 그 영역의 주소를 저장하게 됨.
3) 변수 영역에 a와b라는 프로퍼티 이름을 지정
4) 데이터 영역에서 숫자1을 검색한 후 없으면 새로운 데이터 영역에 저장하고 이 주소를 a에 할당한다.
- 위에서 알수 있듯이 기본형 데이터와의 가장 큰 차이는 '객체의 변수(프로퍼티)영역'이 별도로 존재한다는것임.
- 객체obj1 가 가지는 기존의 메모리공간은 유지한채로 객체가 가지는 변수의 영역이 변하기 때문에 가변값이라고 설명할수 있음.
<중첩객체>
: 참조형 데이터의 프로퍼티에 다시 참조형 데이터를 할당하는 경우
var obj1 = {
x:3,
arr:[3,4,5]
};
- 위의 예시를 모두 이해했다면 추론이 가능함 arr가 데이터영역에서 메모리를 차지하고 있으며, arr가 다시 변수영역을 할당받아 그곳에 배열에 포함되는 원소를 저장하게 됨.
- 만일 위의 arr에 다른 기본형데이터를 할당하게 되면 [3,4,5]의 메모리주소의 참조카운트가 1에서 0으로 변경(자신의 주소를 참조하는 변수의 갯수)되며 가비지컬렉터(garbage collector)의 수거 대상이 됨
( GC는 런타임 환경에 따라 특정 시점이나 메모리 사용량이 포화상태에 임박할 때마다 자동으로 수거대상들을 수거하게 되며 수거된 메모리는 새로운 값을 할당할 수 있는 빈 공간이 됨)
'자바스크립트' 카테고리의 다른 글
자바스크립트 입문_불변객체 (0) | 2021.05.03 |
---|---|
자바스크립트 입문_변수의 복사 (0) | 2021.05.03 |
자바스크립트 입문_불변값 (0) | 2021.05.03 |
자바스크립트 입문_ 변수선언과 데이터 할당 (0) | 2021.05.03 |
자바스크립트 입문_데이터 타입 (0) | 2021.05.03 |