클로저

CLOSURE

클로저란?

A closure is the combination of a function and the lexical environment within which that function was declared.

함수와 '그 함수가 선언될 당시의 환경정보' 사이의 조합 (선언될 당시- scope)

함수 내부에서 생성한 '데이터'와 그 '유효범위'로 인해 발생하는 특수한 현상/상태

lexical environment : 선언 당시의 환경에 대한 정보를 담는 객체(구성 환경)

스코프에서 외부에 정보를 제공할 수 있는 유일한 수단 - return

return function -> 최초 선언 시 생성된 scope 및 lexical environment는 변하지 않는다.

최초 선언시의 정보를 유지한다.

클로저 활용 시 이점

  1. 접근 권한 제어
  2. 지역변수 보호
  3. 데이터 보존 및 활용

스코프는 정의될 때 결정된다!!

CLOSURE로 PRIVATE MEMBER 만들기

private member로 만드는 것은 웹으로의 접근을 제한하는 것 뿐만 아니라 전역 스코프의 변수를 최소화하는 데에도 도움이 된다.

직접 변경할 수 없게 한다 -> 스코프 활용 외부에서 접근하지 못하게 막고 싶은 변수들을 지역변수로 만들고 외부의 노출할 기능만을 return

클로저를 활용해서 private 멤버와 public 멤버를 구분하는 방법

  1. 함수에서 지역변수 및 내부함수 등을 생성한다.
  2. 외부에 노출시키고자 하는 멤버들로 구성된 객체를 return 한다.

-> return한 객체에 포함되지 않은 멤버들은 private하다.
-> return한 객체에 포함된 멤버들은 public하다.

클로저는 객체지향 프로그래밍, 함수형 프로그래밍의 커링에도 중요한 지식이다.

출처

인프런 Javascript 핵심 개념 알아보기 - JS Flow


Written by@Myunghwan
Nothing changes if nothing changes

GitHub