컴퓨터 메모리에서 어떤 일이 일어나는지 간단하게 알아보기

얼마 전 죽음의 array parser의 step5 단계를 진행하면서 매우 기이한 상황에 봉착했었습니다.

객체 type을 판별할 수 있는 parser 코드를 짜야 했는데요. 아래처럼 반복문을 돌면서 token을 분석하고, 결과를 lastChild라는 배열에 push 하도록 설계했습니다.

그 런 데...! 아래와 같은 결과가 나온 것이었습니다.

                                                            <뜻밖의 재귀...?>

                                                        <뜻밖의 재귀...?>

한 군데 push 하면 다른 데서도 똑같은 값이 계속 추가되는 것이었습니다!! child가 계속 쌍둥이 child를 생산...

디버깅 해보니 처음에 선언한 child = [] 가 빈 배열을 넘겨주는 것이 아니라 child가 가리키는 주소를 넘겨줬기 때문이라는 것을 알았습니다.

데이터 타입에 대한 내용은 자바스크립트 책에서도 아주 앞부분에 나오는 기초적인 내용인데, 아직도 제대로 숙지하지 못하고 있다는 것을 깨닫고 **참조(reference)**에 대해 공부하고 글을 써야겠다고 생각했습니다.

그런데, 참조에 대해 공부하다 보니 stack, heap... 메모리의 구조... 메모리의 역사... 까지 알아보고 있는 저를 발견하고 이러다간 2019년에나 블로그 글을 쓸 수 있을 것 같은 생각이 들었습니다. 그래서, 좋은 글을 번역해보는 것으로 절충하였습니다. (저 자신과...)

아랫글은 Codeburst에서 4,300개 정도의 박수(?)를 받은 글로, 저와 같은 비전공자나 자바스크립트를 처음 접하는 사람들이 쉽게 이해할 수 있게 쓰였다고 생각합니다. 그리 길지 않으니 한번 읽어보시면 좋을 것 같고, 혹시나 수정이 필요한 부분이 있다면 피드백 주시면 좋겠습니다.


Explaining Value vs. Reference in Javascript

A simple look at computer memory explains what’s happening

Explaining Value vs. Reference in Javascript - codeburst

written by Arnav Aggarwal