[Javascript] 클로저

Min Seong Kim·2022년 7월 16일
0

클로저

외부 함수의 변수에 접근할 수 있는 내부 함수"를 클로저 함수라고 한다.

클로저 함수의 특징

  • 클로저 함수의 첫 번째 특징은 클로저 함수는 함수를 리턴하는 함수로 함수를 리턴하는 함수가 클로저의 형태를 만든다.
  • 클로저 함수의 두 번째 특징은 내부 함수는 외부 함수에 선언된 변수에 접근 가능하다.

클로저의 활용

데이터를 보전하는 함수

  • 외부 함수의 실행이 끝나더라도 외부 함수 내 변수를 사용 할 수 있다. (일반적인 함수는 함수 실행이 끝나고 나면 함수 내부의 변수를 사용할 수 없다. 이와 다르게 클로저는 외부 함수의 실행이 끝나더라도 외부 함수 내 변수가 메모리 상에 저장된다.)
  • 특정 데이터를 스코프 안에 가두어 둔 채로 계속 사용 할 수 있게 해준다.

정보의 접급 제한

  • 클로저를 이용해 내부 함수를 단 하나만 리턴 하는것에 그치지 않고 객체에 담아 여러 개의 내부 함수를 리턴 하도록 한다.
  • 전역 변수는 다른 함수 혹은 로직 등에 의해 의도되지 않은 변경을 초래하는 side effect를 야기할 수 있으므로 캡슐화를 이용해 이를 최소화하여 오류로부터 값을 안전하게 보호할 수 있다.

모듈화

  • 함수 재사용성을 극대화하여, 함수 하나를 완전히 독립적인 부품 형태로 분리하는 것

  • 클로저는 모듈화에 유리하다(클로저를 통해 데이터와 메서드를 같이 묶어서 다룰 수 있기 때문)


  • 변수 value는 직접 수정이 불가능하며 리턴하는 객체가 제공하는 메서드를 통해서만 조작이 가능하다. 이렇게 캡슐화를 함으로써 변수 value를 makeCounter 함수로 보존하여 전역 변수로 인한 side effect를 방지할 수 있다.

profile
의미 있는 개발자

0개의 댓글