키워드
외부lexical environment
, 이너함수, 스코프 체인
함수의 실행컨텍스트가 활성화 되었을 때, 외부 lexical environment
를 참조하는 것이 가능한 것을 의미한다.
여기서 중요한 점은, 이너 함수에서 외부 lexical environment
에는 접근이 가능하나, 외부 함수 혹은 전역 환경에에서 이너 함수의 데이터에는 접근이 불가능하다는 점이다.
일반적으로 함수의 실행컨텍스트가 생성되는 경우, 호출한 외부 스코프에 대한 lexical environment
정보가 자동으로 생성된다. 함수 실행 시 a
라는 정보를 찾을 때, 만약 지역 변수 데이터에, 즉 environment record
에서 찾을 수 없다면, 생성헀던 외부 lexical environment
에서 데이터를 찾게 된다.
function foo() {
let age = 27;
function bar() {
console.log(++age);
}
return bar;
}
const result = foo();
result(); // 28
result(); // 29
result(); // 30
키워드
함수형 프로그래밍,encapsulation
, 모듈화
클로저는 함수형 프로그래밍에 매우 적합한 기술이다. LinkedList
와 같은 Head와 Tail의 구성으로 이루어진, 단방향성 연결(참조) 형태이므로 외부의 접근을 신경쓰지 않고, 예측 가능한 범위 내에서 코드를 작성할 수 있게 된다. 만약 작업 시 어떤 데이터가 해당 이벤트에서만 필요한 거라면 혹은 외부에 노출되어서는 안되는 것이라면, 해당 함수 스코프에서 선언하여 사용하는 것만으로 문제를 해결할 수 있다. encapsulation