변수는 값을 저장하고 참조할 수 있게 해주는 식별자다. 컴퓨터는 연산 데이터를 메모리에 저장한다. 반대로 그 데이터를 사용하고 싶으면 꺼내서 써야 하는데 메모리 위치를 가리키는 주소는 사람이 읽고 쓰기가 쉽지 않다. 변수는 메모리 주소 대신 사용하는 라벨 같은 것이다.
- 결국변수가 가리키는 건 특정 값이 들어 있는 메모리 주소임
- 변수를 참조하면, JS 엔진이 변수에 매핑된 메소리 주소로 접근해서 값을 가지고 옴
const name = 'san'
const 키워드를 사용해서 name이라는 변수를 선언하고 거기 문자열 san을 할당했다. IDE 뒤에서 일어나는 일은 이렇다.
var 키워드를 사용했을 때, 자바스크립트 엔진이 변수를 선언하는 과정을 살펴보자.
평가 과정
실행 과정(런타임)
라고 생각했다. 재할당하고 나면 식별자 없는 값이 그냥 메모리에 있는 거니까. 메모리 낭비다. 여기서 가비지 컬렉터가 나타난다. 쓰레기 치우는 놈인데 식별자 없이 메모리에서 무위도식하는 데이터들을 주기적으로 전부 내다버린다. 단, 언제 나타나서 내다버릴지는 모른다.