primitive type의 값 변경 시 원리 질문드립니다. (immutable)
235
작성한 질문수 1
안녕하세요.
동영상 강의를 들으면서 인터넷 자료 참고하다 이해 안되는 부분이 있어 질문 드립니다.
우선 primitive type은 immutable value라는 자료를 봤습니다.
immutable value란, "값을 재할당은 할 수 있지만, 메모리 영역에서의 변경이 불가능"임으로 이해를 했습니다.
그렇다면 들어주신 예시 중
var b = 'abc';
b = false;
구문이 실행될 때,
b가 가리키고 있던 314 주소의 값 'abc'가 바로 false로 변경되는 것이 아니라,
316 주소(새로운 주소)에 false 값이 들어가고, b가 가리키는 주소가 314에서 316으로 변경되는 것은 아닌지..헷갈려서 질문드렸습니다.
강의 잘 듣고 있습니다.
감사합니다.
답변 2
3
Immutable을 이해하려면 좀더 딮하게 고민해보아야 합니다. 사실 false라는 값이 다이렉트로 314에 꽂히는 것은 아닙니다. 기본형 데이터값을 저장한 별도의 메모리공간이 있습니다. (예를 들어 1000번이라고 하죠). 그러면 b=false라는 동작은 b->314. 314->1000. 1000->false 가 되겠죠.
이상태에서 다시 b=30 명령을 내리면 b->314. 314->1001. 1001->30 요런 상태가 됩니다. 그런데 이렇게 설명드리면 처음 접하는 분들 입장에서는 참조형과 기본형을 구분짓기에 더 혼란스러울 수 있어서 설명을 생략하였던 것입니다.
3
b변수는 314를 바라보고 있습니다. 그상태에서 b에 false를 넣으라고 명령한 것이니 그냥 314에 false가 들어가는 것이죠. 참조형 데이터일 경우에는 참조형 데이터를 담기 위한 별도의 공간이 필요하기 때문에 b-> 314. 314-> 316. 316->실제데이터 형태로 이루어지게 되지만 그렇다고 해서 b가 다이렉트로 316을 바라보게 되는 것은 아니며 어디까지나 316의 데이터를 ‘참조’할 뿐입니다.
인스턴스에서 prototype 프로퍼티에 직접 접근해야하는 이유
0
59
1
setTimeout 에서 this
0
81
1
2강부터 영상이 나오지 않습니다.
0
175
1
자바스크립트 주석에 이상한 점이 있어서 문의드립니다.
0
221
2
return 문 안에 여러 함수가 존재하는 것이 이해되지 않습니다.
1
259
1
클래스 static 멤버
1
253
1
실행컨텍스트와 스택프레임
2
567
1
프로토타입으로 상속할때 브릿지 사용 이유
0
320
1
호이스팅 관련 질문
1
335
1
책 66p. 예제 3-2 질문입니다.
0
356
1
강의 내용 10:58 캡슐화 질문입니다.
1
399
1
강의 내용 5:10 질문입니다.
1
422
2
전역 공간에서의 this
0
426
2
18:31 addEventListener의 this
1
480
1
outerEnvironmentReference 질문
1
372
1
실행 컨텍스트와 클로저에 대해 질문드립니다.
1
448
1
Object.prototype.constructor의 [[prototype]] ?
1
658
1
함수를 값으로 할당할 때
2
458
1
15:54 'ddd' 사라지는 오류?
4
375
1
프로토타입 getPrototypeOf(instance).constructor(n,a) 질문입니다.
1
406
1
기본형/가변형 질문입니당
0
334
0
선생님 그러면 섹션 0만 봐도 무방한가요!?
0
338
1
Hoisting과 environmentRecord에 관한 질문입니다.
1
294
1
안녕하세요, 데이터 변경 질문입니다.
0
330
1





