원시값은 불변이다. 원시값은 상수, 문자열이 있는데 문자열은 배열과 비슷하다. 

그래서 배열처럼 인덱스로 접근할수 있지만 그렇다고 인덱스 값을 변경할 수 있는 것은 아니다.

변수에 할당된 상수를 다른 값을 넣으면 바뀐다 할 수 있겠지만 틀린 말이다.

 

변수에 원시값을 할당하면 매번 새로운 메모리에 담긴다. 변수가 가르키는 메모리 주소가 바뀌는 것이지

메모리에든 상수값은 변하지 않는다.

 

객체는 그럼 어떻게 될까? 변수에 객체를 할당하면 할당된 메모리에 값이 아닌 객체의 주소를 담는다.

변수의 메모리 주소 -> 객체의 값이 담긴 주소 -> 값이 나온다. 

 

원시값의 불변성은 어떤 변수에 원시값을 담고 다른 변수에 그 변수를 할당했을 때 

어떠한 변수의 값을 바꾼다고 해도 다른 값에 영향을 주지 않는다. 그저 새로운 메모리에 담기 때문이다.

 

객체는 아니다. 변수에 객체를 담고 그 변수를 다른 변수에 할당한다고 생각해보자 

두 변수는 값이 아닌 하나의 주소를 공유한다. 원시값과 달리 주소를 따라가 보면 둘다 같은 메모리 주소가 

나오게 되므로 둘 중 하나가 값을 변경하면 다른쪽 변수 역시 값이 달라지게 된다. 

'진행중 > 모던 JS - 1회독 공부기록' 카테고리의 다른 글

공부기록 - 프로퍼티 어트리뷰트  (0) 2022.08.23
공부 기록 - 함수  (0) 2022.08.22
공부기록 - 객체  (0) 2022.08.20
공부기록 - 변환과 단축 평가  (0) 2022.08.20
공부기록 - 제어문  (0) 2022.08.20

+ Recent posts