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

미해결질문
ChangHyeon Bae 프로필

안녕하십니까?

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

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

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

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

그런데 궁금한점이

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

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

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

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

정재남 프로필
정재남 3달 전

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

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

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

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

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

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

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

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

ChangHyeon Bae 프로필
ChangHyeon Bae 3달 전

답변 감사합니다!!

지식공유자 되기
많은 사람들에게 배움의 기회를 주고,
경제적 보상을 받아보세요.
지식공유참여
기업 교육을 위한 인프런
“인프런 비즈니스” 를 통해 모든 팀원이 인프런의 강의들을
자유롭게 학습하는 환경을 제공하세요.
인프런 비즈니스