inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

코어 자바스크립트

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

235

Tae Hyun Ahn

작성한 질문수 1

0

안녕하세요.

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

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

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

그렇다면 들어주신 예시 중

var b = 'abc';
b = false;

구문이 실행될 때,

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

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

강의 잘 듣고 있습니다.

감사합니다.

javascript

답변 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