아래의 이미지는 자바스크립트 V8 엔진의 구조이다.
위의 이미지와 같이 주소와 값 형태로 이루어져 있으며 변수 a에 데이터를 할당 시에
변수는 그 데이터를 가진 주소를 가리키게 된다.
또한 변수 b와 값이 데이터 타입이 원시 타입이 아닌 경우,
원시 타입의 값은 그 데이터를 가진 메모리 힙에 주소를 가리키게 되는 것이다.
변수 식별자 a 자체는 콜스택 상의 실행컨텍스트(Execution Context)의 렉시컬 환경(Lexical Environment)이라는 곳에 저장된다.
변수 a에 20을 재할당하면, 본인의 메모리에 있는 값을 변경하는게 아니라, 기존에 20을 저장하고 있는 메모리의 주소값으로 교체한다.
a에 저장된 주소값은 20을 가리키고 있던 b에 저장된 주소값과 동일해진다.
이 때 a가 처음에 가지고 있던 10을 가진 메모리 주소는 쓸모없는 값이 되므로