← 질문 목록
#185깊이 0

클로저를 사용해 상태를 은닉하는 이유는 무엇인가?

언어 · 런타임기초메모리설계 원칙

외부 함수의 지역 변수를 외부에서 직접 수정하지 못하게 막아 데이터 무결성을 지키기 때문이다.

기준전역 변수클로저 은닉
접근성누구나 가능정의된 함수만 가능
상태 보호불가능캡슐화 가능

함수가 생성될 때 자신의 렉시컬 환경을 기억한다. 내부 함수로 변수에 접근하는 통로만 열어두면 외부에서는 변수 값을 바꿀 수 없다.

이는 객체 지향의 캡슐화와 유사한 효과를 낸다. 불필요한 전역 변수 사용을 줄여 이름 충돌을 방지하고 상태 변화를 예측 가능하게 만든다.

다만 클로저는 참조하는 변수를 계속 메모리에 유지한다. 클로저가 오래 살아 있으면 그것이 잡은 값도 같이 남는다. 다만 클로저에 닿을 길이 끊기면 함께 걷힌다. 새는 것이 아니라 붙잡고 있는 것이다.

추천 꼬리질문

0/300

적은 내용은 AI 학습에 쓰일 수 있습니다. 이름이나 연락처는 넣지 말아 주세요.

관련 질문

클로저를 사용해 상태를 은닉하는 이유는 무엇인가?