September 28, 2020
클로저란?
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는 변하지 않는다.
최초 선언시의 정보를 유지한다.
클로저 활용 시 이점
스코프는 정의될 때 결정된다!!
private member로 만드는 것은 웹으로의 접근을 제한하는 것 뿐만 아니라 전역 스코프의 변수를 최소화하는 데에도 도움이 된다.
직접 변경할 수 없게 한다 -> 스코프 활용 외부에서 접근하지 못하게 막고 싶은 변수들을 지역변수로 만들고 외부의 노출할 기능만을 return
클로저를 활용해서 private 멤버와 public 멤버를 구분하는 방법
-> return한 객체에 포함되지 않은 멤버들은 private하다.
-> return한 객체에 포함된 멤버들은 public하다.
클로저는 객체지향 프로그래밍, 함수형 프로그래밍의 커링에도 중요한 지식이다.
인프런 Javascript 핵심 개념 알아보기 - JS Flow