JS 참조

개발 log·2021년 9월 6일
0

JS 지식

목록 보기
6/36
post-thumbnail

왜 JS에서 재할당과정이 진행될 때 새로운 메모리 주소에 값을 할당하고 새로운 주소를 식별자에게 전달하는 과정을 거칠까?

그냥 지우고 고치면 되지 않을까?

라는 궁금증에서 시작해 이 글을 씁니다.

먼저 변수는 값의 메모리 주소를 갖고 있는 식별자 입니다.

그렇기에 만약 아래와 같은 상황일 때

var a = 10;
var b = a;
a = 20;

저는 b에 a의 값을 할당하고 a를 20으로 재할당하기를 원했습니다.

당연히 위의 출력결과는 a = 20, b = 10이 출력되죠

어떤 과정 때문에 이런 결과가 가능한걸까요?

우선 a가 선언되고 10이 할당되면 10이 할당된 메모리의 주소값을 a가 갖습니다.

그 후 b에 a를 할당하면 a의 주소값을 b가 갖습니다.

그 후 a에 20을 재할당하면 새로운 메모리 공간에 20을 할당한 후 해당 주소값을 a에 전달해줍니다.

이 덕분에 a와 b의 값이 다르게 출력될 수 있는 것이죠

하지만 만약 재할당할때 a의 값을 지우고 다시 쓴다면 b도 a의 주소를 갖고 있었기 때문에
a = 20, b = 20 이라는 제가 원하지 않는 값이 나오겠죠

이 때문에 값을 재할당할때는 값을 지우고 새로 쓰는것이 아닌 새로운 공간에 할당 후 주소값을 변경하는 것입니다.

profile
프론트엔드 개발자

0개의 댓글