클로저란 무엇인가?

G-NOTE·2021년 10월 8일
0

JavaScript

목록 보기
5/7

클로저(closer)란?

클로저는 함수와 그 함수가 선언된 렉시컬 환경과의 조합이다.

자신을 포함하고 있는 외부 함수보다 중첩 함수가 더 오래 유지되는 경우, 외부 함수 밖에서 중첩 함수를 호출해도 외부 함수의 지역 변수에 접근할 수 있는 함수이다.

클로저의 원리

중첩 함수의 [[Environment]] 내부 슬롯에 의해 외부 함수가 참조되고 있으므로 가비지 컬렉션의 대상이 되지 않는다. 따라서 외부 함수의 수명이 다해 실행 컨텍스트 스택에서 pop되더라도 '중첩 함수가 참조하는 한' 렉시컬 환경은 사라지지 않는다.

클로저의 활용

클로저는 state를 안전하게 변경하고 유지하기 위해 사용한다.
즉, 상태가 의도치 않게 변경되지 않도록 상태를 안전하게 은닉(information hiding)하고 특정 함수에게만 상태 변경을 허용하기 위해 사용한다.

정보 은닉(information hiding)

  • 캡슐화를 객체의 특정 프로퍼티나 메서드를 감출 목적으로 사용하는 것
  • 외부에 공개할 필요가 없는 정보를 감춰 객체의 불필요한 상태 변경을 방지해 정보를 보호하고, 결합도(coupling, 객체 간 상호 의존성)를 낮추는 효과가 있다.
profile
FE Developer

0개의 댓글