• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

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

20.02.19 22:46 작성 조회수 144

0

안녕하십니까?

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

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

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

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

그런데 궁금한점이

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

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

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

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

답변 2

·

답변을 작성해보세요.

2

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

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

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

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

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

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

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

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

0

답변 감사합니다!!