원시 타입 변수 재할당 예제에서 의문이 들었음.
10이었던 원시타입 변수 a를 20으로 변경함.
이때 값이 바뀌는 게 아니라 변수 a가 가르키고 있던 주소가
20이라는 값을 지니고 있는 주소 10FF 0010을 바라보는 게 맞는지 의문이 생긴 것임!
그러면 변수 a랑 b는 같은 주소와 값을 갔게 되는 걸까?
처음에 내가 저기서 설명했을 땐 마치 그렇게 되는 것처럼 작성했다.
왜?? 서치해본 자료를 올린 사람들이 그렇게 말했거든...
스터디를 하면서 의견이 나왔다.
그럼 같은 주소를 바라보게 되는 거라면...
변경된 게 없는 건데, 그럼 리랜더링 안 되지 않을까? 하는...
이 의문에서 시작된 정답은!!?
처음 설명이 틀린 것이었다.
원시 타입에서 변수의 값은 직접 저장된다. 즉, 값이 변경될 때 메모리에서 값을 직접 수정하는 방식으로 동작한다는 것!
let a = 10; // 변수 a의 값 10, 주소: 10FF 0001
let b = 20; // 변수 b의 값 20, 주소: 10FF 0010
a는 값 10을 가지고 있고, 이 값은 주소 10FF 0001에 저장된다.
b는 값 20을 가지고 있고, 이 값은 주소 10FF 0010에 저장된다.
원시 타입 변수 a값을 20으로 변경해보자...
그럼 a = b; 로 a는 b의 값 20을 갖게 되는 것이다.
그러니까 새로운 20을 갖는 게 아니라 기존에 있던 20(b가 지니고 있던)을 복사해오는 것임!
let a = 20; // a는 주소 10FF 0001에 값 20
let b = 20; // b는 주소 10FF 0010에 값 20
결론...