강의

멘토링

로드맵

Inflearn Community Q&A

585080143's profile image
585080143

asked

Core JavaScript

primitive type의 값 변경 시 원리 질문드립니다. (immutable)

Written on

·

224

0

안녕하세요.

동영상 강의를 들으면서 인터넷 자료 참고하다 이해 안되는 부분이 있어 질문 드립니다.

우선 primitive type은 immutable value라는 자료를 봤습니다.

immutable value란, "값을 재할당은 할 수 있지만, 메모리 영역에서의 변경이 불가능"임으로 이해를 했습니다.

그렇다면 들어주신 예시 중

var b = 'abc';
b = false;

구문이 실행될 때,

b가 가리키고 있던 314 주소의 값 'abc'가 바로 false로 변경되는 것이 아니라,

316 주소(새로운 주소)에 false 값이 들어가고, b가 가리키는 주소가 314에서 316으로 변경되는 것은 아닌지..헷갈려서 질문드렸습니다.

강의 잘 듣고 있습니다.

감사합니다.

javascript

Answer 2

3

jaenam님의 프로필 이미지
jaenam
Instructor

Immutable을 이해하려면 좀더 딮하게 고민해보아야 합니다. 사실 false라는 값이 다이렉트로 314에 꽂히는 것은 아닙니다. 기본형 데이터값을 저장한 별도의 메모리공간이 있습니다. (예를 들어 1000번이라고 하죠). 그러면 b=false라는 동작은 b->314. 314->1000. 1000->false 가 되겠죠.

이상태에서 다시 b=30 명령을 내리면 b->314. 314->1001. 1001->30 요런 상태가 됩니다. 그런데 이렇게 설명드리면 처음 접하는 분들 입장에서는 참조형과 기본형을 구분짓기에 더 혼란스러울 수 있어서 설명을 생략하였던 것입니다.

3

jaenam님의 프로필 이미지
jaenam
Instructor

b변수는 314를 바라보고 있습니다. 그상태에서 b에 false를 넣으라고 명령한 것이니 그냥 314에 false가 들어가는 것이죠. 참조형 데이터일 경우에는 참조형 데이터를 담기 위한 별도의 공간이 필요하기 때문에 b-> 314. 314-> 316. 316->실제데이터 형태로 이루어지게 되지만 그렇다고 해서 b가 다이렉트로 316을 바라보게 되는 것은 아니며 어디까지나 316의 데이터를 ‘참조’할 뿐입니다.

585080143's profile image
585080143

asked

Ask a question