일반적으로 메모리는 세가지의 과정을 거친다.
할당 -> 사용 -> 해제
아래의 코드로 좀 더 알아보자
1. let variable = 123
2. let variable2 = variable
3. variable = variable + 1
// 0x0004와 같은 주소는 설명을 위해 예시로 넣은 주소입니다.
1.variable
변수가 메모리 0x0004의 주소를 할당받으며 값(123)이 그 주소로 저장됨.
2.variable2
변수에 먼저 선언한variable
변수를 대입함으로써variable2
가variable
의 메모리 주소 0x0004를 참조함.
3. 자바스크립트 원시 타입을 변경 할 땐 항상 새로운 메모리 주소를 할당 받는다. 따라서 새 메모리 주소 0x0008를 할당받고 값(124)이 저장됨.
자바스크립트 엔진은 가상머신으로 구성된다.
참조 타입이 들어가는 Heap과 원시 타입이 들어가는 Call Stack으로 나뉜다.
let a = 10
const b = 20
const arr = [];
arr.push(5);
arr.push(3);
arr.push(1);
- 배열은
Object
타입이므로 참조 타입으로 분류, 따라서 Heap에 배열영역 생성- Call Stack에 생성된
arr
변수는 Heap에 생성된 배열 영역 주소를 참조- Heap은 동적으로 크기가 달라지므로
const
로 선언을 해도 값을 추가, 제거 등 할 수 있음
프로그래머스 데브코스 교육 내용을 바탕으로 정리한 글 입니다.