본문 바로가기
Coding/Book

모던 자바스크립트 Deep dive - 변수

by broheat 2022. 3. 15.

메모리

데이터를 저장할 수 있는 메모리 셀의 집합체이며 메모리 셀의 크기는 1바이트(8비트)이다. 메모리에 저장되는 모든 값은 2진수로 저장된다.

변수

하나의 값을 저장하기 위해 확보한 메모리 공간 자체 또는 그 메모리 공간을 식별하기 위해 붙인 이름을 말한다. 변수는 값이 저장되어 있는 메모리 주소와 매핑 관계를 맺으며, 이 매핑 정보도 메모리에 저장되어야 한다. 즉 변수는 값이 아니라 메모리 주소를 기억하고 있다. 개발자는 메모리 주소에 직접 접근하지 않고 변수를 통해 안전하게 값에 접근할 수 있다.

변수 선언

만약에 메모리 공간에 기존 값이 있으면 잘못된 값을 불러올 수 있으므로, 변수를 선언할 때는 메모리 공간에 undefined를 할당하여 초기화한다. 여기서 할당이란 변수에 값을 저장하는 것을 의미한다.
자바스크립트 엔진은 먼저 소스코드의 평가 과정에서 변수 선언을 소스코드에서 찾아 먼저 실행한다. 이 과정이 끝나고 나서 소스코드를 순차적으로 실행한다. 즉, 변수 선언은 항상 다른 코드보다 먼저 실행된다. 이러한 특징을 변수 호이스팅이라고 한다.

변수에 값 할당

변수에 값을 할당할 때는 이전 값이 저장되어 있던 메모리 공간은 그대로 두고, 새로운 메모리 공간을 확보하여 그곳에 값을 저장하고 변수를 연결한다. 이렇게 되면 이전 값이 저장되어 있던 메모리 공간은 더 이상 필요하지 않게 되어 가비지 콜렉터에 의해 자동 해제된다. 언제 해제될지는 예측할 수 없다.

댓글