inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

코어 자바스크립트

정재남 강사님? 선배님에게 질문하나 드려요!

287

frontzero

작성한 질문수 8

0

안녕하십니까?

오랜만에 강의 다시 한번 상기시키는 개념으로 보고있다가 궁금한점이 생겨서 질문 남겨요!

원시타입 같은 경우 변수를 생성하면

해당 실행컨텍스트내에 메모리가 할당이 되고

참조타입 같은 경우는 Heap 영역에 생성이 되는걸로 알고 있습니다.

그런데 궁금한점이

const 같은 키워드로 변수를 선언하면

이 변수는 더이상 값을 할당할수없어! 라고 되는데

이게 메모리에서 어떤식으로 락(?)이 걸려서 동작하는지 궁금합니다.

추가로 Object.freeze() 시, 해당 레퍼런스로 참조한 데이터를 변경하지 못하게 막아버리는데 이게 메모리에서 어떤식으로 동작을 하는지 궁금합니다!

javascript

답변 2

2

정재남

아쉽지만 저는 컴퓨터공학 전공이 아니고 해당 내용을 깊이 있게 공부한 경험도 없는지라

메모리 레벨에서 어떻게 동작하는지는 알지 못합니다.

기껏해야 자바스크립트 언어 레벨에서 약간의 힌트를 드릴 수는 있을 것 같네요.

ES5에서 새로 도입된 Object.defineProperty 메소드에는 configurable 이라는 프로퍼티가 있습니다.

이걸 false로 지정할 경우, 해당 변수는 삭제나 변경이 불가능하게 됩니다.

즉 메모리 레벨에서 락(?)을 거는 것이 아니라 언어차원에서 방지하는 방법입니다.

ES6의 const로 선언한 변수는 자동으로  configurable 옵션을 false로 지정하는 것으로 알고 있습니다.

마찬가지로 Object.freeze는  지정한 객체 내부의 1depth 프로퍼티들 각각에 대해 configurable을 false로 지정하는 메소드로 알고 있습니다.

0

frontzero

답변 감사합니다!!

인스턴스에서 prototype 프로퍼티에 직접 접근해야하는 이유

0

59

1

setTimeout 에서 this

0

80

1

2강부터 영상이 나오지 않습니다.

0

175

1

자바스크립트 주석에 이상한 점이 있어서 문의드립니다.

0

219

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

398

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

457

1

15:54 'ddd' 사라지는 오류?

4

375

1

프로토타입 getPrototypeOf(instance).constructor(n,a) 질문입니다.

1

404

1

기본형/가변형 질문입니당

0

333

0

선생님 그러면 섹션 0만 봐도 무방한가요!?

0

335

1

Hoisting과 environmentRecord에 관한 질문입니다.

1

290

1

안녕하세요, 데이터 변경 질문입니다.

0

328

1